UVA 10054 The Necklace
2016-07-23 15:08
399 查看
UVA-10054
题意:给出若干个珠子,每个珠子两端都有颜色,两个珠子相同颜色的一端可以接在一起,问给出的能不能串成一个项链。解题思路:能不能串成一串,明显又是欧拉回路。所有点的度都要为偶数。是欧拉回路的条件下,DFS遍历输出。
额,要注意点,点的坐标是1-50,,不是1-n。
/************************************************************************* > File Name: UVA-10054.cpp > Author: Narsh > > Created Time: 2016年07月22日 星期五 10时24分23秒 ************************************************************************/ #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> using namespace std; int map[1100][1100],d[1010],n,m,t,num=0; void dfs(int x) { for (int i = 1; i <= 50; i++) if (map[x][i]) { d[x]--; d[i]--; map[x][i]--; map[i][x]--; dfs(i); printf("%d %d\n",i,x); } } int main() { //freopen("xx.in","r",stdin); scanf("%d",&t); while (t--) { int a,b; scanf("%d",&n); memset(map,0,sizeof(map)); memset(d,0,sizeof(d)); for (int i = 1; i <= n; i++) { scanf("%d%d",&a,&b); map[a][b]++; map[b][a]++; d[a]++;d[b]++; } int f=1; for (int i = 1; i <= 50; i++) if (d[i] % 2 != 0) { f=0; break; } printf("Case #%d\n",++num); if (!f) printf("some beads may be lost\n"); else { for (int i = 1; i <= 50; i++) if (d[i]) dfs(i); } if (t) printf("\n"); } }
相关文章推荐
- 并查集算法和路径压缩
- 循环冗余校验检错方案(CRC)
- 在python 中is和= = 的区别
- 坦克大战_坦克绘制
- Eclipse修改包的显示样式
- 《OpenCV3编程入门》访问图像中像素的三类方法
- Activities
- nana gui 控件拖拽
- BigDecimal的8种取值方式
- OpenCV学习资源
- androidstudio for mac 引入jar 包的方式更简单
- vertical-align初步理解
- single model
- iOS开发常用代码(实用)
- Android上Sensor移植的总结
- 链表尾部增加结点,打印结点,删除结点
- Android -static变量的生命周期
- 【原创】遨游springmvc之原理篇
- Codeforces Round #364 (Div. 2) D. As Fast As Possible(数学推导)
- android学习笔记之调用拨号界面拨打电话