HU-188-ユーラシックバック路

1100 ワード

HU-188-ユーラシックバック路
http://acm.hdu.edu.cn/showproblem.php?pid=1878
図Gの1つの回路は、Gのそれぞれの辺を通りますと、この回路はヨーバック路と呼ばれています。
一つの方向図がない場合は、Eultureがあり、図のすべての頂点の度数が偶数であり、図は連通図である。
#include
#include
#include
int n,m;
int visit[1002],f[1002];
void init()
{
	int i;
	for(i=1;i<=n;i++)
	f[i]=i;
}
int find(int x)
{
	int r=x;
	while(f[r]!=r)
	r=f[r];
	f[x]=r;
	return r;
}
void Union(int x,int y)
{
	int fx,fy;
	fx=find(x);
	fy=find(y);
	if(fx!=fy)
	f[fx]=fy;
}
int main()
{
	int a,b,i;
	int ans,flag;
	while(scanf("%d",&n),n)
	{
		scanf("%d",&m);
		memset(visit,0,sizeof(visit));
		init();
		ans=0;
		while(m--)
		{
			scanf("%d %d",&a,&b);
			visit[a]++;
			visit[b]++;
			Union(a,b);
		}
		for(i=1;i<=n;i++)
		if(f[i]==i)
		ans++;
		if(ans==1)
		{
			flag=1;
			for(i=1;i<=n;i++)
			if(visit[i]%2==1)
			{
				flag=0;
				break;
			}
			if(flag==1)
			printf("1
"); else printf("0
"); } else printf("0
"); } return 0; }