分析
- 一個無向圖如果是歐拉回路,那每個的點的度數都是偶數
- 所有點是在同一個連通分量中,用並查集來表示的話,就是所有的點都只有一個爹。
ac代碼
#include <cstdio>
#include <cstring>
const int MAX_N=1001;
int degree[MAX_N],fa[MAX_N];
int n,m,f1=1,f2=1;
int get(int x){
if(fa[x]==-1)return x;
else return fa[x]=get(fa[x]);
}
int main()
{
scanf("%d%d",&n,&m);
memset(degree,0,sizeof(degree));
memset(fa,-1,sizeof(fa));
for(int i=1;i<=m;++i){
int u,v;
scanf("%d%d",&u,&v);
degree[u]++;
degree[v]++;
int fau=get(u);
int fav=get(v);
if(fau!=fav)
fa[fau]=fav;
}
for(int i=1;i<=n;++i){
if(degree[i]&1){
f1=0;
break;
}
}
int father=get(1);
for(int i=2;i<=n;++i){
if(get(i)!=father){
f2=0;
break;
}
}
if(f1&&f2)
printf("1");
else
printf("0");
return 0;
}