欧拉回路
无向图是欧拉图的充要条件是所有点的度为偶数并且所有点联通
有向图是欧拉图的充要条件是所有点的入度=出度..并且联通...
联通的话,并查集搞一搞就好啦~~
贴个板子:
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<cstdlib> 6 7 using namespace std; 8 9 const int maxn = 200000; 10 int pa[maxn]; 11 int d[maxn]; 12 13 int find(int x) 14 { 15 if(pa[x] == x) return x; 16 return pa[x] = find(pa[x]); 17 } 18 19 int main() 20 { 21 int n,m; 22 while(scanf("%d%d",&n,&m) == 2&& n) 23 { 24 memset(d,0,sizeof(d)); 25 for(int i = 0;i <= n;i++) pa[i] = i; 26 for(int i = 0;i < m;i++) 27 { 28 int from,to; 29 scanf("%d%d",&from,&to); 30 d[from]++;d[to]++; 31 int x = find(from);int y = find(to); 32 pa[x] = y; 33 } 34 int i; 35 for(i = 1;i <= n;i++) 36 if(d[i]%2 == 1|| find(i) != find(1)) break; 37 if(i <= n) printf("0\n"); 38 else printf("1\n"); 39 } 40 return 0; 41 }

浙公网安备 33010602011771号