[USACO]EulerianTour (欧拉通路)
2014-04-05 11:39
405 查看
题意:求序列最短的欧拉通路
解题思路: 无向图欧拉通路存在的条件是每个点的度都是偶数 或者是 有两个点度为奇数(一个为起点,一个为终点) 这里需要用到 fleury 算法(判圈法)时间复杂度为 O(V+E)
解题代码:
View Code
解题思路: 无向图欧拉通路存在的条件是每个点的度都是偶数 或者是 有两个点度为奇数(一个为起点,一个为终点) 这里需要用到 fleury 算法(判圈法)时间复杂度为 O(V+E)
解题代码:
/* ID: dream.y1 PROG: fence LANG: C++ */ #include<stdio.h> #include<string.h> #include<stdlib.h> #include<time.h> #include<math.h> #include<limits.h> int hs[2000]; int map[600][600]; int n; int be = 0; int en = 0; int ans[1000]; int numans = 0 ; int okk = 0 ; int is = 0 ; void dfs(int k ) { if(!hs[k]) { ans[numans] = k ; numans = numans +1; }else { while(hs[k]) { for(int i = 1;i <= 500;i++) { if(map[k][i]) { map[k][i] -- ; map[i][k] -- ; hs[i] --; hs[k] --; dfs(i); } } } ans[numans] = k ; numans ++ ; } } int main(){ freopen("fence.in","r",stdin); freopen("fence.out","w",stdout); memset(map,0,sizeof(map)); memset(hs,0,sizeof(hs)); scanf("%d",&n); for(int i = 1;i <= n;i ++) { int a, b; scanf("%d %d",&a,&b); map[a][b] ++ ; map[b][a] ++ ; hs[a] ++ ; hs[b] ++ ; } int ok = 0 ; int bbe = INT_MAX ; for(int i = 1;i <= 500;i ++) { if(hs[i] % 2== 1) { is = 1; be = i ; ok = 1; break; } else if(hs[i]) { bbe = bbe > i ? i:bbe; } } if(ok ) dfs(be); if(!ok) dfs(bbe); for(int i = numans -1 ;i >= 0 ; i --) printf("%d\n",ans[i]); return 0 ; }
View Code
相关文章推荐
- USACO 3.3.1Riding the Fences(弗罗莱算法寻找欧拉通路)
- USACO 3.3 TEXT Eulerian Tour中的Cows on Parade一点理解
- USACO section 3.3 Riding the Fences(欧拉通路的遍历,dfs)
- USACO section 3.3 Riding the Fences(欧拉通路的遍历,dfs)
- Riding the Fences (USACO 3.3) 无向图欧拉通路/回路
- usaco3.3Riding the Fences输出欧拉通路
- POJ 1386 有向图欧拉通路
- uva 10441(poj 2337 欧拉通路)
- HDU 5883 The Best Path(欧拉通路与欧拉回路)
- 弗罗莱(Fleury)算法 欧拉(Euler)通路/回路
- FZU 2112(欧拉通路&&判联通图)
- Codeforces Round #288 (Div. 2) D. Tanya and Password 欧拉通路
- PKU 2513 ColorSticks 知识预备(欧拉通路、回路),感谢蔡根同学。
- ZOJ 2016 Play on Words (HDU 1116)(欧拉回路,欧拉通路)
- POJ 1386(欧拉回路,欧拉通路,变相DNF)
- Codeforces Round #288 (Div. 2)D.Tanya and Password——欧拉通路
- POJ 1385 Play on Words (有向图欧拉通路)
- POJ 2513 (Trie树+欧拉通路+并查集判断连通)
- hdu 5424 Rikka with Graph II(欧拉通路)
- PKU2513 - Colored Sticks --一道很不错的题(结合了并查集的应用,字典树的应用,欧拉通路的原理)