分析
- 一个无向图如果是欧拉回路,那每个的点的度数都是偶数
- 所有点是在同一个连通分量中,用并查集来表示的话,就是所有的点都只有一个爹。
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;
}