UVA10054The Necklace (打印欧拉路)
2016-03-11 13:22
260 查看
题目链接
题意:一种由彩色珠子组成的项链。每个珠子的两半由不同的颜色组成。相邻的两个珠子在接触的地方颜色相同。现在有一些零碎的珠子,需要确定他们是否可以复原成完整的项链
分析:之前也没往欧拉路上面想,看了书上的分析,太对了。把每一个颜色看做一个节点,把每个珠子的两半练成一条边,就转换成了求是否构成欧拉回路的问题了。
这道题学到的东西就是欧拉回路的打印,要逆序!!!! 这篇是讲逆序的原因
如果不逆序,
这组样例 1,2; 2,3 ; 3,2; 2,1;就打印不对,因为它会打印 1,2;2,1;2,3;3,2这样的,所以就要逆序,逆序的的愿意就是防止顺序到达一个死胡同,就像第二步的2,1,就陷入死胡同了,先深搜,判断 1能否还可以进行,如果1不行的话,就输出1,2,继续以2为原点来进行遍历,这题学到了
View Code
题意:一种由彩色珠子组成的项链。每个珠子的两半由不同的颜色组成。相邻的两个珠子在接触的地方颜色相同。现在有一些零碎的珠子,需要确定他们是否可以复原成完整的项链
分析:之前也没往欧拉路上面想,看了书上的分析,太对了。把每一个颜色看做一个节点,把每个珠子的两半练成一条边,就转换成了求是否构成欧拉回路的问题了。
这道题学到的东西就是欧拉回路的打印,要逆序!!!! 这篇是讲逆序的原因
如果不逆序,
这组样例 1,2; 2,3 ; 3,2; 2,1;就打印不对,因为它会打印 1,2;2,1;2,3;3,2这样的,所以就要逆序,逆序的的愿意就是防止顺序到达一个死胡同,就像第二步的2,1,就陷入死胡同了,先深搜,判断 1能否还可以进行,如果1不行的话,就输出1,2,继续以2为原点来进行遍历,这题学到了
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; const int Max = 1000 + 10; int degree[Max]; int g[Max][Max]; void print(int u) { for(int i = 1; i <= 50; i++) { if(g[u][i] > 0) { g[u][i]--; g[i][u]--; print(i); // 先深搜 printf("%d %d\n", i, u); // 注意 是 i, u,以为i点已经不能作为起点来进行往下搜了,所以 以 i 为起点到 u } } } int main(int argc, char** argv) { int test, n; scanf("%d", &test); for(int t = 1; t <= test; t++) { scanf("%d", &n); memset(g, 0, sizeof(g)); memset(degree, 0, sizeof(degree)); for(int i = 1; i <= n; i++) { int a,b; scanf("%d%d", &a, &b); degree[a]++; degree[b]++; g[a][b]++; g[b][a]++; } int flag = false; for(int i = 1; i <= 50; i++) { if(degree[i] % 2) { flag = true; break; } } printf("Case #%d\n", t); if(flag) { printf("some beads may be lost\n"); } else { for(int i = 1; i <= 50; i++) if(degree[i]) { print(i); break; } } printf("\n"); } return 0; }
View Code
相关文章推荐
- HTTP,FTP,TCP,UDP及SOCKET
- 加密解密你了解多少?
- 九度OJ:1011 最大连续子序列
- UVA10487二分查找上界和下界
- leader follower
- 原码, 反码, 补码 详解
- Android开发使用的常见第三方框架汇总
- [编程题] 扫描透镜(本题还涉及如何从字符串中提取数字)
- ORA-26663 Oracle Streams 在删除进程出错
- 自学 java 笔记 day13(集合)
- 输出python模块依赖
- IOS版使用移动广告平台集成Google Mobile Ads SDK教程
- chmod命令详细用法
- AdapterView学习总结
- 并发编程之基础( 一)
- iOS开发网络篇—数据缓存
- JSON和对象之前的相互转换
- liferal portal 6 -简介
- Android Studio更新升级方法
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架? 《转载》