UVA 10596 - Morning Walk
来源:互联网 发布:隐形眼镜掉在地上 知乎 编辑:程序博客网 时间:2024/05/21 13:58
题目大意:给你N个结点,R条路问是否存在欧拉回路
解题思路:判断每个在路上结点是否是偶数个度数,且每个结点都指向起始结点所指向的结点
#include <cstdio>int node[201], degree[201];int find(int x) { if (x != node[x]) //假如此结点连接了其他结点, 就寻找它所连接的结点是否又连接了其他结点 return node[x] = find(node[x]); //此联通路上面的所有结点都指向同一个端点 return x;}int main() { int num, road; while (scanf("%d%d", &num, &road) != EOF) { bool ok = true; int ans = 0; for (int i = 0; i < num; i++) //初始化度数, 并且给结点编号 degree[i] = 0, node[i] = i; int a, b; for (int i = 0; i < road; i++) { //记录每个结点的度数 scanf("%d%d", &a, &b); node[find(a)] = find(b); // 连接两个未联通的点 degree[a]++; degree[b]++; } if (road <= 1) //小于等于 1 条路就不可能存在欧拉回路 ok = false;int root = find(0); for (int i = 0; ok && i < num; i++) //判断所有在路上的点是否是偶数且联通if (degree[i] != 0)// 如果该点在路上if (find(i) != root || degree[i] % 2 != 0) {// 该点是否跟 0 点在同个集合 || 度数判断ok = false;break;}printf(ok ? "Possible\n" : "Not Possible\n");}return 0;}
0 0
- uva 10596 - Morning Walk
- uva 10596 - Morning Walk
- uva 10596 - Morning Walk
- UVa 10596 - Morning Walk
- UVa 10596 - Morning Walk
- UVA 10596 Morning Walk
- uva 10596 - Morning Walk
- UVA 10596 Morning Walk
- uva 10596Morning Walk
- UVa 10596: Morning Walk
- uva 10596 - Morning Walk
- uva 10596 Morning Walk
- Morning Walk UVA 10596
- UVa 10596 - Morning Walk
- UVA 10596 - Morning Walk
- UVA - 10596 Morning Walk
- uva 10596 - Morning Walk
- UVA - 10596 Morning Walk
- Java 多态
- Joomla微博推广
- Climbing Stairs
- iPhone 5即将基于NFC的苹果产品
- IPraxa不断升级你的职业生涯有实际的培训
- UVA 10596 - Morning Walk
- iPad的必备技巧
- jquery点击空白处隐藏div
- 常用设计模式的应用场景
- [置顶] 中文翻译 for S5PV210_iROM
- iOS必备小技巧(非常的全)
- Linux makefile 教程 跟我一起写 Makefile
- c#控制台之制造内存泄露简单办法
- DTO学习