首页 > 代码库 > hdu1878(判断欧拉图)
hdu1878(判断欧拉图)
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1878
题目分析:
一个图是欧拉图的充要条件是这个图是连通的而且每个点的度为偶数
代码如下:
#include <iostream> #include <cstring> #include <cstdio> using namespace std; const int maxn =1010; int par[maxn]; int num[maxn],pp[maxn]; void init() { for(int i=0;i<maxn;i++) par[i]=i,num[i]=0,pp[i]=1; } int find_par(int x) { if(par[x]!=x) par[x]=find_par(par[x]); return par[x]; } void Union(int x,int y) { x=find_par(x); y=find_par(y); if(x!=y){ par[x]=y; pp[y]+=pp[x]; } } int main() { int n,m,a,b; while(~scanf("%d",&n)){ if(n==0) break; scanf("%d",&m); init(); for(int i=0;i<m;i++){ scanf("%d%d",&a,&b); num[a]++,num[b]++; Union(a,b); } bool f=0,g=1; for(int i=1;i<=n;i++){ if(num[i]&1) f=1; if(pp[i]==n) g=0; } if(f||g) puts("0"); else puts("1"); } return 0; }
hdu1878(判断欧拉图)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。