码迷,mamicode.com
首页 > 其他好文 > 详细

The Necklace UVA - 10054 (无向图的欧拉回路)

时间:2017-08-26 14:20:02      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:main   puts   can   eof   none   namespace   欧拉   分享   style   

The Necklace

 UVA - 10054 

题意:每个珠子有两个颜色,给n个珠子,问能不能连成一个项链,使得项链相邻的珠子颜色相同。

把颜色看做点,珠子内部连一条边,无向图求欧拉回路。

这里我用的并查集。

输出路径就dfs就行了

技术分享
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int g[55][55];
 4 int f[55];
 5 int deg[55];
 6 int n;
 7 
 8 int gf(int x)
 9 {
10   return x==f[x]?x:f[x]=gf(f[x]);
11 }
12 
13 void dfs(int u)
14 {
15     for(int i=1;i<=50;i++) if(g[u][i])
16     {
17         g[u][i]--;
18         g[i][u]--;
19         dfs(i);
20         printf("%d %d\n",i,u);
21     }
22 }
23 int main()
24 {
25     int t;
26     int kase=0;
27     scanf("%d",&t);
28     while(t--)
29     {
30         for(int i=0;i<=55;i++) f[i]=i;
31         memset(deg,0,sizeof(deg));
32         memset(g,0,sizeof(g));
33         scanf("%d",&n);
34         int u,v;
35         for(int i=0;i<n;i++)
36         {
37             scanf("%d%d",&u,&v);
38             g[u][v]++;
39             g[v][u]++;
40             deg[u]++;
41             deg[v]++;
42             int pu=gf(u);
43             int pv=gf(v);
44             if(pu!=pv) f[pu]=pv;
45         }
46         if(kase) puts("");
47         printf("Case #%d\n",++kase);
48         int rt=0;
49         int flag=1;
50         for(int i=1;i<=50;i++) if(deg[i])
51         {
52             if(deg[i]&1) {
53                 flag=0;
54                 break;
55             }
56             if(rt==0) rt=gf(i);
57             else{
58                 int v=gf(i);
59                 if(v!=rt) {
60                     flag=0;
61                     break;
62                 }
63             }
64         }
65         if(flag)
66         {
67             dfs(rt);
68         }
69         else puts("some beads may be lost");
70     }
71 }
View Code

 

The Necklace UVA - 10054 (无向图的欧拉回路)

标签:main   puts   can   eof   none   namespace   欧拉   分享   style   

原文地址:http://www.cnblogs.com/yijiull/p/7435132.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!