HRBUST 1351 欧拉路径及回路的判断~
来源:互联网 发布:天龙八部清风怡江美工 编辑:程序博客网 时间:2024/06/05 11:16
给出一个无向图,n个顶点m条边。
然后m条边的信息,a b 表示ab之间有一条边
如果存在欧拉路径,输出“have Euler path”,如果存在欧拉回路,输出“have Euler Circuit“,
如果原图不连通,输出”Graph is not connected!“,否则输出”have no Euler path“。
判断欧拉路是否存在的方法
有向图:图连通,有一个顶点出度大入度1,有一个顶点入度大出度1,其余都是出度=入度。
无向图:图连通,只有两个顶点是奇数度,其余都是偶数度的。
判断欧拉回路是否存在的方法
有向图:图连通,所有的顶点出度=入度。
无向图:图连通,所有顶点都是偶数度。
记录每条边的信息,统计每个顶点的度数,用tot记录度数为奇数的顶点的个数,并查集判断是否联通,flag 记录集合的总数.
然后按照要求输出即可~
#include<stdio.h>#include<string.h>using namespace std;int f[1005];int ang[1005];int getfather(int x){ if(f[x]!=x)f[x]=getfather(f[x]); return f[x];}void bing(int st,int ed){ int f1=getfather(st),f2=getfather(ed); if(f1!=f2)f[f1]=f2;}int main(){ int t,st,ed,n,m; while( scanf("%d %d",&n,&m)!=EOF){ for(int i=1;i<=100;i++){ ang[i]=0,f[i]=i; } for(int i=1;i<=m;i++){ scanf("%d %d",&st,&ed); ang[st]++,ang[ed]++; bing(st,ed); } int tot=0,flag=0,tp=-1; for(int i=1;i<=n;i++){ if(ang[i]%2==1)tot++; if(getfather(i)!=tp){ tp=getfather(i),flag++; } } if(flag==1&&tot==0){ printf("have Euler Circuit\n");continue; } if(flag==1&&tot==2){ printf("have Euler path\n");continue; } if(flag!=1){ printf("Graph is not connected!\n");continue; } printf("have no Euler path\n"); } return 0;}
- HRBUST 1351 欧拉路径及回路的判断~
- 欧拉回路及欧拉路的判断
- 欧拉回路和欧拉路径的判断
- hrbust 哈理工oj 1633 word!word!【欧拉路、欧拉回路的有向图判断】
- 欧拉回路的构建及输出欧拉回路的路径
- 欧拉回路的判断
- 欧拉回路的判断
- 欧拉回路的判断
- POJ 2337 欧拉回路+欧拉路径+判断欧拉回路和路径
- 欧拉回路--输出欧拉回路的路径
- 判断欧拉路径和欧拉回路
- 哈理工OJ 1351 欧拉路径(判断连通图+欧拉回路或者欧拉路径)
- 欧拉路径/回路
- 欧拉回路判断
- 欧拉回路判断
- 欧拉道路(回路)的判断
- 杭电1116Play on Words(欧拉路径(回路)的判断)
- HDU5883 欧拉路径与欧拉回路的判定
- 【Oracle问题集7】ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated
- 2013.9.28微软笔试题-真题分析 链表大题 mircosoft
- Eclipse快捷键使用
- 记录配置cocos2dx android eclipse编译环境 in win7
- Leetcode: Letter Combinations of a Phone Number
- HRBUST 1351 欧拉路径及回路的判断~
- plsql(一)
- AboutServer
- Android Low Memory Killer
- Struts2与Spring结合的jar包
- 【NOIP 2010】 引水入城
- 使用Eclipse构建Maven项目 (step-by-step)
- AdMob demo code.
- POJ 2453二进制又一重要用法