/*
这是道关于欧拉回路的问题
无向图,要想能构成欧拉路径,首先必须是联通的.所以用并查集判断是不是一个祖先来判断是否是完全联通的图.
其次要保证,它度必须全是偶数.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef __int64 LL;
#define N 1100
int f[N];
int data[N];
int find(int a) { return f[a]==-1?a:f[a]=find(f[a]);}
void unit(int a,int b)
{
int fa=find(a),fb=find(b);
if(fa!=fb)
{
if(fb<fa)
f[fa]=fb;
else
f[fb]=fa;
}
}
int main()
{
int n,m,a,b,i;
while(scanf("%d",&n),n)
{
memset(f,-1,sizeof(f));
memset(data,0,sizeof(data));//度
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d%d",&a,&b);
unit(a,b);
data[a]++;
data[b]++;
}
int zuxian=0;
for(i=1;i<=n;i++)
{
if(data[i]&1)
break;
if(data[i]&&find(i)==i)
{
zuxian++; //祖先数目
}
if(zuxian>1)
break;
}
if(i!=n+1)
puts("0");
else
puts("1");
}
return 0;
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交