HDU 1878
一个无向图存在欧拉回路,当且仅当该图拥有奇数度数的顶点的个数为0且该图是连通图。
一个有向图存在欧拉回路,所有顶点的入度等于出度且该图是连通图。
#include<stdio.h> #include<string.h> int a[1005],father[1005],depth[1005]; void init(int n) { int i; for(i = 1;i <= n;i ++) { father[i] = i; depth[i] = 0; a[i] = 0; } } int find(int x) { if(x==father[x]) return x; return father[x] = find(father[x]); } void unit(int x,int y) { x = find(x); y = find(y); if(x == y) return ; if(depth[x] < depth[y]) father[x] = y; else { if(depth[x]>depth[y]) father[y] = x; else { father[x] = y; depth[y]++; } } } int main() { int n,m,i,j,flag; while(~scanf("%d%d",&n,&m)&&n) { flag = 0; init(n); while(m--) { scanf("%d%d",&i,&j); a[i]++; a[j]++; i = find(i); j = find(j); unit(i,j); } for(i = 1; i <= n; i ++) { if(i==find(i)) flag++; if(flag==2) break ; } if(flag==2) { printf("0\n"); continue ; } for(i = 1;i <= n; i ++) { if(a[i]%2!=0) flag = 0; } if(flag) printf("1\n"); else printf("0\n"); } return 0; }