无向图欧拉回路的条件
1. 连通
2. 所有结点度为偶数
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int pre[1005];
int deg[1005];
int n,m;
void init()
{
for(int i=1; i<=1005; i++)
{
pre[i]=i;
}
return;
}
int find(int x)
{
int r=x;
while(r!=pre[r])
r=pre[r];
int i=x,j;
while(pre[i]!=r)
{
j=pre[i];
pre[i]=r;
i=j;
}
return r;
}
void join(int x,int y)
{
int fx=find(x),fy=find(y);
if(fx!=fy)
{
pre[fx]=fy;
}
return;
}
int main()
{
int a,b,i;
while(scanf("%d",&n)!=-1&&n)
{
init();
memset(deg,0,sizeof(deg));
scanf("%d",&m);
for(int i=0; i<m; i++)
{
scanf("%d%d",&a,&b);
join(a,b);
deg[a]++;
deg[b]++;
}
int ans=0;
for(i=1; i<=n; i++)
if(i==pre[i])
ans++;
for(i=1; i<=n; i++)
if(deg[i]%2)
break;
if(i>n)
{
if(ans==1)
printf("1\n");
else
printf("0\n");
}
else
printf("0\n");
}
return 0;
}