首页 > 其他 > 详细

UVa 10054 (打印欧拉回路) The Necklace

时间:2015-04-25 11:55:34      阅读:208      评论:0      收藏:0      [点我收藏+]

将每个颜色看成一个顶点,对于每个珠子在两个颜色之间连一条无向边,然后求欧拉回路。

技术分享
 1 #include <cstdio>
 2 #include <cstring>
 3 
 4 const int maxn = 50 + 5;
 5 int G[maxn][maxn], deg[maxn];
 6 
 7 void Euler(int u)
 8 {
 9     for(int v = 1; v <= 50; v++) if(G[u][v])
10     {
11         G[u][v]--; G[v][u]--;
12         Euler(v);
13         printf("%d %d\n", v, u);
14     }
15 }
16 
17 int main()
18 {
19     //freopen("in.txt", "r", stdin);
20 
21     int T; scanf("%d", &T);
22     for(int kase = 1; kase <= T; kase++)
23     {
24         memset(G, 0, sizeof(G));
25         memset(deg, 0, sizeof(deg));
26 
27         if(kase > 1) puts("");
28         printf("Case #%d\n", kase);
29 
30         int n, a, b, st;
31         scanf("%d", &n);
32         for(int i = 0; i < n; i++)
33         {
34             scanf("%d%d", &a, &b);
35             st = a;
36             deg[a]++; deg[b]++;
37             G[a][b]++; G[b][a]++;
38         }
39 
40         bool ok = true;
41         for(int i = 1; i <= 50; i++) if(deg[i] % 2) { ok = false; break; }
42         if(!ok) { puts("some beads may be lost"); continue; }
43 
44         Euler(st);
45 
46     }
47 
48     return 0;
49 }
代码君

 

UVa 10054 (打印欧拉回路) The Necklace

原文:http://www.cnblogs.com/AOQNRMGYXLMV/p/4455497.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!