hdu1878欧拉回路
怎么说呢,做完这题发现自己的代码好挫好挫啊。。。
判断无向图欧拉回路,只需要判断连通与无奇点就行,待会转一个欧拉回路的总结。
代码:
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int N = 1010;
int degree[N];
int arr[N];
int p[N];
int find(int x)
{
if(x!=p[x])
p[x]=find(p[x]);
return p[x];
}
void unions(int x,int y)
{
int fx=find(x);
int fy=find(y);
if(fx!=fy)
{
p[fy]=p[fx];
}
}
int main()
{
int n,m,flag,x,y;
while(scanf("%d",&n)!=EOF&&n)
{
scanf("%d",&m);
flag=1;
for(int i=1;i<=n;i++)
{
p[i]=i;
arr[i]=0;
}
for(int i=0;i<m;i++)
{
scanf("%d%d",&x,&y);
arr[x]++;
arr[y]++;
unions(x,y);
}
for(int i=1;i<=n;i++ )
{
if(p[i]!=1)
{
flag=0;
break;
}
else if(arr[i]%2!=0)
{
flag=0;
break;
}
}
if(flag)
cout<<1<<endl;
else
cout<<0<<endl;
}
return 0;
}

浙公网安备 33010602011771号