zzuacm吧 关注:1贴子:7
  • 1回复贴,共1

NYOJ 42 图论

只看楼主收藏回复

#include <stdio.h>
#include <string.h>
const int maxn =1100;
int str[maxn][maxn];
int d[maxn];
int visit[maxn];
int q,p;
void dfs(int v){
int i=v;
visit[v] = 1;
for(i=1; i<= p; i++){
if(i!=v && !visit[i] && str[v][i])
dfs(i);
}
}
int main()
{
int a,b,i,t,count,flag;
scanf("%d", &t);
while (t--){
count = 0;
flag = 1;
memset(visit, 0, sizeof(visit));
memset(str, 0, sizeof(str));
memset(d, 0, sizeof(d));
scanf("%d%d", &p, &q);
for(i=1; i<=q; i++){
scanf("%d%d", &a, &b);
str[a][b]=1;
str[b][a]=1;
d[a]++;
d[b]++;
}
dfs(1);
for(i=1; i<=p; i++){
if(visit[i] == 0){
flag = 1;
break;
}
if(d[i] & 1)
count ++;
}
if (flag ){
if(count == 2 || count == 0)
printf("Yes\n");
else printf("No\n");
}
else printf("No\n");
}
return 0;
}


1楼2014-08-13 13:50回复
    main函数的第而个flag应该为0


    2楼2014-08-13 14:51
    回复