uva10596
来源:互联网 发布:fifaol3数据库手机版 编辑:程序博客网 时间:2024/06/05 20:01
#include <iostream>#include <stdio.h>#include <string.h>using namespace std;int deg[230];//每个点的度,根据欧拉定理连通图的每个点度都为偶数时,可以遍历每个桥一次int n,m;int a,b;//连接的两个点bool d;bool un_link;//d代表是否有度为奇数的点,un_link代表是否连通int sets[230];//点集合,初始化时每个点是一个集合,如果有边连接两个点,就把这两个点所在的集合合并,方法见代码int find(int i)//寻找点i所在的集合(集合的代表点也就是第一个放进去的点,也即返回值){ if(i != sets[i]) return find(sets[i]); else return sets[i];}int main(){ while(scanf("%d%d",&n,&m)!=EOF) { if(m==0) //不存在路,直接输出,不然会RE,编译器不一样的话就不会RE { printf("Not Possible\n"); continue; } memset(deg,0,sizeof(deg)); d=0,un_link=0; for(int i=0; i<n; i++) sets[i]=i; for(int i=0; i<m; i++) { scanf("%d%d",&a,&b); sets[find(a)]=find(b);//把a点所在的集合放入了b所在的集合 deg[a]++; deg[b]++; } int i; for(i=0; !deg[i]; i++);//找到第一个有连接的点 for(int j=i+1; j<n; j++) //判断是否连通 if(deg[j] && find(j)!=find(i)) { un_link=1;//如果写成==1,不会报错!!! break; } for(int j=0; j<n; j++) if(deg[j]%2 != 0) { d=1; break; } if(d || un_link) printf("Not Possible\n"); else printf("Possible\n"); } return 0;}
阅读全文
0 0
- UVA10596
- uva10596
- UVA10596
- uva10596
- UVA10596- Morning Walk
- UVa10596 Morning Walk
- uva10596 - Morning Walk
- UVa10596 Morning Walk
- UVa10596 - Morning Walk(并查集)
- UVA10596欧拉回路加特判
- uva10596 Morning Walk (无向图,欧拉回路,存在性判断)
- Swift元组类型转字符串类型
- Lucas定理模板【bzoj2982】【combination】
- contentprovider_provider与contentprovider_resolver连接
- i2c的基础概念和框架
- 7.6 控制缓存的能力
- uva10596
- SCOI-2010-连续攻击游戏
- Javascript进制之间的转换。
- android Activity生命周期
- Atom 更为先进的文本代码编辑器
- symbol-versioning
- getchar()、gets()、getch()
- 7.7 设置缓存控制
- Angular4学习笔记(一)-环境搭建