项链,蓝书P309Uva10054(拓扑排序,欧拉回路)
来源:互联网 发布:php 高并发锁机制 编辑:程序博客网 时间:2024/04/28 11:34
本题非常非常有意思,刚开始读完题目以为就是之前做过的有向图求欧拉道路Uva10129单词。但是看完题解之后发现,原来这道题跟“单词”有一个很大的不同点就是,单词不可以翻转,而珠子可以翻转。所以在单词问题中ab,ab并不能连到一起,而本题ab,ab是可以连上的,把珠子ab翻转一下即可。所以单词是一道标准的有向图的题目,但是本题就是一个无向图求欧拉回路的问题。
无论是有向图求欧拉回路还是无向图求欧拉回路,首先判断底图的连通性是最重要的。单纯依靠节点的度数和来判断,无法判断出两个环组成的图的情况(每个节点度数和都为0但是不连通,无欧拉回路)。
但是本题要求就比较简单了,题目并没要求用所有珠子做项链,也没要求判是否能做成项链。只要求判断是否有珠子剩余,这就非常简单了。
// UVa10054 The Necklace// Rujia Liu#include<cstdio>#include<cstring>#include<vector>using namespace std;const int maxcolor = 50;int n, G[maxcolor+1][maxcolor+1], deg[maxcolor+1];struct Edge { int from, to; Edge(int from, int to):from(from),to(to) {}};vector<Edge> ans;void euler(int u){ for(int v = 1; v <= maxcolor; v++) if(G[u][v]) { G[u][v]--; G[v][u]--; euler(v); ans.push_back(Edge(u, v)); }}int main() { int T; scanf("%d", &T); for(int kase = 1; kase <= T; kase++) { scanf("%d", &n); memset(G, 0, sizeof(G)); memset(deg, 0, sizeof(deg)); int start = -1; for(int i = 0; i < n; i++) { int u, v; scanf("%d%d", &u, &v); G[u][v]++; G[v][u]++; deg[u]++; deg[v]++; start = u; } // 无向图的欧拉回路 bool solved = true; for(int i = 1; i <= maxcolor; i++) if(deg[i] % 2 == 1) { solved = false; break; } // 检查度数 if(solved) { ans.clear(); euler(start); if(ans.size() != n || ans[0].to != ans[ans.size()-1].from) solved = false; } printf("Case #%d\n", kase); if(!solved) printf("some beads may be lost\n"); else for(int i = ans.size()-1; i >= 0; i--) printf("%d %d\n", ans[i].from, ans[i].to); if(kase < T) printf("\n"); } return 0;}
阅读全文
0 0
- 项链,蓝书P309Uva10054(拓扑排序,欧拉回路)
- UVA 10054项链(欧拉回路)
- UVa 10054 项链(欧拉回路)
- 欧拉回路(项链,UVA 10054)
- 暑假集训之欧拉回路+拓扑排序
- [各种面试题] 拓扑排序、欧拉路径/回路
- 入门经典_Chap06_例题[三]:图的搜索 Floodfill 拓扑排序 欧拉回路
- 数据结构与算法专题之图——欧拉回路与拓扑排序
- 欧拉回路(混合图的欧拉回路)
- HDU 1878 欧拉回路(判断欧拉回路)
- HDU1878欧拉回路(欧拉回路的判定)
- hdoj--5526--欧拉回路(欧拉回路)
- HDU 1878 欧拉回路(欧拉回路)
- hdu1878—欧拉回路(欧拉回路判断)
- HDOJ 1811 欧拉回路 (判断欧拉回路)
- 欧拉回路(欧拉路径)
- 欧拉回路(欧拉路径)
- 欧拉回路(道路)
- vue.js入门(一)
- JavaScript 变量作用域和闭包
- 2.nhibernate配置
- popen的使用
- Java实训——编写一个窗体程序,用于计算一元二次方程。
- 项链,蓝书P309Uva10054(拓扑排序,欧拉回路)
- root无法登录ssh排查思路
- ScrollView嵌套RecycleVeiw中显示不全,滑动不流畅问题
- 连续总结第三十天
- 更改MySQL数据库的编码为utf8mb4
- LWIP下UDP组播协议——zynq使用
- wnnafly挑战赛3 D-Butterfly2
- linux dd命令
- L __TEXT _T TEXT