UVa 10596 - Morning Walk
来源:互联网 发布:linux crontab 权限 编辑:程序博客网 时间:2024/06/05 19:09
題目:Kamal早上散步,發現有很多條路,問能否每條路走一次回到原點。
分析:圖論,歐拉迴路,并查集。判斷是否存在歐拉迴路。
歐拉迴路存在條件:1.有邊的點度數為偶數,2.右邊的點構成的圖聯通。
說明:╮(╯▽╰)╭。
#include <cstdlib>#include <cstring>#include <cstdio>#define NODE_SIZE 202#define EDGE_SIZE 10001int degree[NODE_SIZE];typedef struct _edge{int point1;int point2;}edge;edge E[EDGE_SIZE];//union_setint sets[NODE_SIZE];int rank[NODE_SIZE];void set_inital(int a, int b){for (int i = a; i <= b; ++ i) {rank[i] = 0;sets[i] = i;}}int set_find(int a){if (a != sets[a])sets[a] = set_find(sets[a]);return sets[a];}void set_union(int a, int b){if (rank[a] < rank[b])sets[a] = b;else {if (rank[a] == rank[b])rank[a] ++;sets[b] = a;}}//end_union_setint euler(int n, int m){memset(degree, 0, sizeof(degree));set_inital(0, n);for (int i = 0; i < m; ++ i) {int A = set_find(E[i].point1);int B = set_find(E[i].point2);if (A != B) set_union(A, B);degree[E[i].point1] ++;degree[E[i].point2] ++;}int ans = 0, flag = 0;for (int i = 0; i < n; ++ i) {if (degree[i]) ans += (sets[i]==i);if (degree[i]%2) flag = 1;}return (ans == 1 && !flag);}int main(){int n, m;while (~scanf("%d%d",&n,&m)) {for (int i = 0; i < m; ++ i)scanf("%d%d",&E[i].point1,&E[i].point2);if (euler(n, m))printf("Possible\n");else printf("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
- 含有重复元素的全排列
- 拓扑排序 Codecorces510C Fox And Names
- 使用log4j的一个工程改名后并存于一个tomcat服务器一个无法启动
- Android中Intent的几种使用方法
- ABPersonViewController不显示除了名称的属性
- UVa 10596 - Morning Walk
- hdoj The mook jong 5366 (简单规律 打表)
- 数论之 素因子分解,素数筛选法,欧拉函数和扩展欧几里得算法 (整理)
- poj2007 Scrambled Polygon (叉积极角排序)
- BZOJ 1356 [Baltic2009]Rectangle 数学
- 类型参数约束
- 优秀程序员的45个习惯
- Java enum的集合用法
- Xcode中的调试工具栏简介