欧拉回路

无向图是欧拉图的充要条件是所有点的度为偶数并且所有点联通

有向图是欧拉图的充要条件是所有点的入度=出度..并且联通...

联通的话,并查集搞一搞就好啦~~

贴个板子:

 

 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 }
板子

 

posted @ 2017-03-04 10:11  rsqppp  阅读(154)  评论(0)    收藏  举报