http://acm.hdu.edu.cn/showproblem.php?pid=1878
/*
如果图中所有顶点的度为偶数(出度+入度,即出度等于入度),
则该图存在欧拉回路
*/
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define maxn 1005
int fa[maxn],degree[maxn];
int n,m,i,fg,x,y,cnt,st,nd;
int find_set(int x)
{
if(fa[x] == x)
return x;
else
return find_set(fa[x]);
}
void union_set(int x,int y)
{
int root_x = find_set(x);
int root_y = find_set(y);
if(root_x != root_y)
fa[root_y] = root_x;
}
int main()
{
while(~scanf("%d",&n),n)
{
memset(degree,0,sizeof(degree));
for(i = 1; i <= n; i++)
fa[i] = i;
cnt = 0;
scanf("%d",&m);
for(i = 1;i <= m;i++)
{
scanf("%d%d",&st,&nd);
if(st > nd)//注意这里的处理
swap(st,nd);
degree[st]++;
degree[nd]++;
union_set(st,nd);
}
for(i = 1;i <= n;i++)
{
if(degree[i] % 2 == 0 && fa[i] == 1)
cnt++;
}
if(cnt == n)
printf("1\n");
else
printf("0\n");
}
return 0;
}