判断欧拉路径(非并查集写法)
2016-07-29 22:30
495 查看
目标算法:欧拉路径算法
应用范围:判断是否存在欧拉路径
应用范围:判断是否存在欧拉路径
#include<cstdio> #include<iostream> #include<cstring> using namespace std; const int maxn = 105; int degree[maxn]; int map[maxn][maxn]; int vis[maxn]; int n,m; int ans; void init() { memset(map,0,sizeof(map)); memset(vis,0,sizeof(vis)); memset(degree,0,sizeof(degree)); } void dfs(int x) { vis[x] = 1; for(int i=1;i<=n;i++) { if(!vis[i] && map[x][i]) dfs(i); } return ; } int check() { for(int i=1;i<=n;i++) { if(degree[i] % 2 != 0) ans++; } return ans; } int main() { while(~scanf("%d%d",&n,&m)) { init(); int a,b; int cnt = 0; int flag = 0; for(int i=0;i<m;i++) { scanf("%d%d",&a,&b); map[a][b] = map[b][a] = 1; degree[a]++; degree[b]++; } dfs(1); ans = 0; for(int i=1;i<=n;i++) { if(!vis[i]) { flag = 1; break; } } if(flag) printf("Graph is not connected!\n"); else if(!flag && check() == 2) printf("have Euler path\n"); else if(!flag && check() == 0) printf("have Euler Circuit\n"); else printf("have no Euler path\n"); } }
相关文章推荐
- POJ 2513 Colored Sticks
- SGU 101 Domino
- Codeforces Round #288 (Div. 2) D.Tanya and Password(欧拉路径)
- HDU 3018 Ant Trip (欧拉路径)
- HDU 1116 && POJ 1386 Play on Words(欧拉路径)
- The Necklace
- 【欧拉路径(有向图)】poj 1386 play on words
- HDU 1116(并查集,欧拉路径)
- SGU 101 欧拉路
- UVa--10129 Play on Words(欧拉通路)
- Hust oj 1351 欧拉路径(欧拉路径)
- cpp环境【Uva10129】【VIJOS2863】玩弄单词
- CCF 送货 (欧拉回路+字典序打印路径)
- CCF 201512-4 送货(欧拉路径+字典序最小)
- hdu 5883 The Best Path 欧拉路径 & 欧拉回路 并查集
- hihocoder 1181(浅谈佛罗莱算法在求欧拉路径可行解中的应用)
- Catenyms(有向欧拉图+判断回路+打印路径)
- 201512-4-送货
- 201412-2-Z字形扫描
- 5883-The Best Path