hdu1878之欧拉回路
来源:互联网 发布:老挝和越南 知乎 编辑:程序博客网 时间:2024/04/28 18:22
判断是否存在欧拉回路,存在欧拉回路的条件:所有顶点的度为偶数,并且图是联通的
判断顶点的度是否为偶数只要进行统计判断就行,判断图的联通可以用并查集,判断所
判断顶点的度是否为偶数只要进行统计判断就行,判断图的联通可以用并查集,判断所
有的顶点是否在一棵树上只要看有几棵树就ok了。
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<string>#include<queue>#include<algorithm>#include<map>#include<iomanip>#include<vector>#define INF 99999999using namespace std;const int MAX=1001;int n,m,father[MAX],rank[MAX];int degree[MAX],sum;void makeset(int num){for(int i=1;i<=num;++i){father[i]=i;rank[i]=1;}}int findset(int v){if(v != father[v])father[v]=findset(father[v]);return father[v];}void Union(int a,int b){int x=findset(a);int y=findset(b);if(x == y)return;if(rank[x]<rank[y]){father[x]=y;rank[y]+=rank[x];}else{father[y]=x;rank[x]+=rank[y];}--sum;}int main(){int a,b;while(cin>>n,n){cin>>m;memset(degree,0,sizeof degree);makeset(n);sum=n;for(int i=0;i<m;++i){scanf("%d%d",&a,&b);++degree[a];++degree[b];Union(a,b);}if(sum == 1){while(n){if(degree[n]&1){cout<<"0"<<endl;break;}--n;}if(!n)cout<<"1"<<endl;}else cout<<"0"<<endl;}return 0;}
- hdu1878之欧拉回路
- 欧拉回路 hdu1878
- hdu1878欧拉回路
- hdu1878 欧拉回路
- 欧拉回路((hdu1878))
- HDU1878欧拉回路
- 欧拉回路 hdu1878
- HDU1878欧拉回路
- hdu1878 欧拉回路
- hdu1878 欧拉回路
- HDU1878 欧拉回路
- hdu1878 欧拉回路
- hdu1878 欧拉回路
- HDU1878 欧拉回路
- HDU1878 欧拉回路
- HDU1878-欧拉回路
- HDU1878 欧拉回路【欧拉回路】
- hdu1878欧拉回路【并查集】
- SQL server 2008安装出现ENU错误的解决方法
- 找不到音量按钮
- BeginPath&EndPath&SelectClipPath
- 使用js实现图片的自动切换
- Eclipse设置:背景与字体大小和xml文件中字体大小调整
- hdu1878之欧拉回路
- codeforces 272,273( Round #167)题解
- 进程与线程的区别和联系
- 光流场计算的分析
- 编译voreen方法
- 【基础知识】vc++中的随机数生成算法
- I-EIM分享一套局域网通讯源码
- linux c 中嵌入汇编
- 汇编中寄存器的详解