一个无向图存在欧拉回路,当且仅当该图拥有奇数度数的顶点的个数为0且该图是连通图。
一个有向图存在欧拉回路,所有顶点的入度等于出度且该图是连通图。
#include<stdio.h>
#include<string.h>
int a[1005],father[1005],depth[1005];
void init(int n)
{
int i;
for(i = 1;i <= n;i ++)
{
father[i] = i;
depth[i] = 0;
a[i] = 0;
}
}
int find(int x)
{
if(x==father[x])
return x;
return father[x] = find(father[x]);
}
void unit(int x,int y)
{
x = find(x);
y = find(y);
if(x == y)
return ;
if(depth[x] < depth[y])
father[x] = y;
else
{
if(depth[x]>depth[y])
father[y] = x;
else
{
father[x] = y;
depth[y]++;
}
}
}
int main()
{
int n,m,i,j,flag;
while(~scanf("%d%d",&n,&m)&&n)
{
flag = 0;
init(n);
while(m--)
{
scanf("%d%d",&i,&j);
a[i]++;
a[j]++;
i = find(i);
j = find(j);
unit(i,j);
}
for(i = 1; i <= n; i ++)
{
if(i==find(i))
flag++;
if(flag==2)
break ;
}
if(flag==2)
{
printf("0\n");
continue ;
}
for(i = 1;i <= n; i ++)
{
if(a[i]%2!=0)
flag = 0;
}
if(flag)
printf("1\n");
else
printf("0\n");
}
return 0;
}