第一道图论题!
原来没看清要求,以为只是一笔画走完就可以了,后来一看,原来还是要走回原点的。
#include<stdio.h>
#include<string.h>
struct tu{
int num;
int index;
int sum[102];
}str[102];
void cha(int n,int k)
{
int j;
for(j=1;j<=n;j++)
if(str[k].index==1&&str[k].sum[j]==1&&str[j].index!=1)
{
str[j].index=1;
cha(n,j);
}
return;
}
int main()
{
int m,n,i,c,sum,d;
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(str,0,sizeof(str));
for(i=0;i<m;i++)
{
scanf("%d%d",&c,&d);
str[c].sum[d]=1;
str[d].sum[c]=1;
str[c].num++;
str[d].num++;
}
str[1].index=1;
cha(n,1);
sum=0;
for(i=1;i<=n;i++)
{
if(str[i].index==0)break;
if(str[i].num%2==1)sum++;
}
if(i<=n||sum!=0)printf("NO\n");
else printf("YES\n");
}
return 0;
}