无向欧拉回路的充要条件
连通且所有结点的度为偶数。
无向欧拉通路的充要条件
连通且奇度结点的个数为2
#include"stdio.h"
#include"string.h"
#define N 1001
int set[N];
int find(int x)
{
if(set[x]==x)return x;
set[x]=find(set[x]);
return set[x];
}
void merge(int a,int b)
{
int x,y;
x=find(a);
y=find(b);
if(x!=y)set[x]=y;
}
int main()
{
int i;
int n,m;
int a,b;
int degree[N];
while(scanf("%d",&n)!=-1&&n)
{
scanf("%d",&m);
memset(degree,0,sizeof(degree));
for(i=1;i<=n;i++)set[i]=i;
while(m--)
{
scanf("%d%d",&a,&b);
degree[a]++;
degree[b]++;
merge(a,b);
}
int cnt=0;
for(i=1;i<=n;i++)if(set[i]==i)cnt++;
if(cnt>1)printf("0\n");
else
{
cnt=1;
for(i=1;i<=n;i++)
if(degree[i]%2){cnt=0;break;}
printf("%d\n",cnt);
}
}
return 0;
}