UVa10054 The Necklace,无向图求欧拉回路
来源:互联网 发布:淘宝上的zuzu是正品吗 编辑:程序博客网 时间:2024/06/05 08:08
无向图求欧拉回路:
1、图连通
2、所有顶点的度数位偶数
随便从一个点开始递归遍历即可求出路径
#include <cstdio>#include <cstring>#include <vector>using namespace std;const int maxcolor = 50;int n, G[maxcolor+1][maxcolor+1], deg[maxcolor+1];struct Edge{int from, to;Edge(int from, int to):from(from), to(to){}};vector<Edge> ans;void euler(int u){for(int v=1; v<=maxcolor; v++) if(G[u][v]){G[u][v]--; G[v][u]--;euler(v);ans.push_back(Edge(u, v));}}int main(){int T;scanf("%d", &T);for(int cas=1; cas<=T; ++cas){scanf("%d", &n);memset(G, 0, sizeof G );memset(deg, 0, sizeof deg );int start = -1;for(int i=0; i<n; ++i){int u, v;scanf("%d%d", &u, &v);G[u][v]++; G[v][u]++;deg[u]++; deg[v]++;start = u;}//无向图的欧拉回路bool solved = true;for(int i=1; i<=maxcolor; ++i)if(deg[i]%2==1) {solved = false; break;}if(solved){ans.clear();euler(start);if(ans.size() !=n || ans[0].to != ans[ans.size()-1].from)solved = false;}printf("Case #%d\n", cas);if(!solved){printf("some beads may be lost\n");}else for(int i=ans.size()-1; i>=0; i--) printf("%d %d\n", ans[i].from, ans[i].to);if(cas<T) printf("\n");}return 0;}
0 0
- UVa10054 The Necklace,无向图求欧拉回路
- UVA10054 The Necklace 无向图欧拉回路+连通性
- UVa10054 The Necklace (欧拉回路)
- 【UVa10054】The Necklace【欧拉回路】
- UVA10054 The Necklace (输出欧拉回路)
- uva10054-The Necklace(项链)
- The Necklace UVA10054
- UVA10054 The Necklace
- UVa10054 The Necklace
- The Necklace UVA10054
- uva10054 The Necklace
- UVA10054 The Necklace
- UVA10054-The Necklace
- The Necklace UVA10054
- Uva10054 无向图打印任意欧拉回路
- uva10054 The Necklace (欧拉回路路径输出 (并查集 + DFS) || (DFS + stack))
- 无向图欧拉回路
- Riding the Fences (USACO 3.3) 无向图欧拉通路/回路
- 【SPOJ】913 Query on a tree II QTREE系列之2【LCA】
- 运输公司对用户计算运费.路程越远每公里运费越低.每公里每吨货物的基本运费p = 3;用户需要输入货物重量w和距离s;根据距离的不同折扣d不同(具体见)下面的表格,要求根据用户输入的w和s,计算出总运费
- 选择语句
- 关于 == 和 equals
- log4j日志框架的配置
- UVa10054 The Necklace,无向图求欧拉回路
- Google笔试题整理(超全!)附部分答案
- POJ 1106 Transmitters (简单计算几何)
- 异步GET请求(使用委托)
- 计算几何之判断两条线段相交
- HashSet集合存储自定义对象及注意事项
- Longest Palindromic Substring
- h264基础知识梳理
- 数组应用