Uva10054 无向图打印任意欧拉回路
来源:互联网 发布:淘宝上hm折扣代购真假 编辑:程序博客网 时间:2024/05/18 20:31
题意 有一些双色水珠,串成一条项链,前后两个水珠的前后位置颜色要相同,问你可行吗?如果可行,把串的方法打印出来
思路 颜色作为节点,水珠为边建图。先用并查集判断连通性,再判断是否为欧拉图,最后dfs打印~注意无向图用过一条边i->j后,要删去i->j和j->i,还有打印的时候有小技巧,可以体会下~
#include <iostream>#include <cstdio>#include <cstring>#include <map>using namespace std;const int maxn = 51;int n,m;int g[maxn][maxn];int fa[maxn];int ra[maxn];int bian[maxn];int mapp[maxn];//原映射到新 int rmapp[maxn];int judge(int x){if(rmapp[x] == -1){rmapp[x] = n;mapp[n] = x;n++;}return rmapp[x];}int find(int x){if(x == fa[x])return x;return fa[x] = find(fa[x]);}void unin(int x,int y){x = find(x);y = find(y);if(x == y)return;if(ra[x] > ra[y]){fa[y] = x;}else if(ra[y]>ra[x]){fa[x] = y;}else{fa[x] = y;ra[y]++;}}void dfs(int i){for(int j=0;j<n;j++){while(g[i][j]){g[i][j]--;g[j][i]--;dfs(j);//可细考虑 printf("%d %d\n",mapp[j],mapp[i]);}}}int main(){int T;cin>>T;int t = 1;for(t=1;t<=T;t++){scanf("%d",&m);memset(g,0,sizeof(g));memset(ra,0,sizeof(ra));memset(bian,0,sizeof(bian));memset(rmapp,-1,sizeof(rmapp)); for(int i=1;i<=maxn;i++){fa[i] = i;}n = 0;for(int i =0;i<m;i++){int u,v;scanf("%d%d",&u,&v);u = judge(u);v = judge(v);unin(u,v);g[u][v]++;g[v][u]++;bian[u]++;bian[v]++;}bool flag = 0;if(bian[0]&1)flag = 1;for(int i=1;i<n&&flag==0;i++){if(find(i) != find(i-1))flag = 1;if(bian[i]&1)flag = 1;}if(flag){printf("Case #%d\nsome beads may be lost\n\n",t);continue;}printf("Case #%d\n",t);dfs(0);puts("");}}
0 0
- Uva10054 无向图打印任意欧拉回路
- UVA10054欧拉回路
- 欧拉回路打印路径(两种)uva10054
- 图论 欧拉回路 uva10054
- UVa10054 The Necklace,无向图求欧拉回路
- UVa10054 The Necklace (欧拉回路)
- 【UVa10054】The Necklace【欧拉回路】
- UVA10054 The Necklace (输出欧拉回路)
- uva10054--欧拉回路--串珠子
- uva10054(递归+欧拉回路)
- 无向图的欧拉回路线性时间算法
- 杭电hdu 1878 欧拉回路 无向图
- HDU1878无向图判断欧拉回路
- POJ 1041 无向图的欧拉回路
- hdu 1878 欧拉回路 无向图连通性
- hdu 1878 无向图的欧拉回路
- hdu 1878 欧拉回路(无向图)
- hdu1878 欧拉回路(无向图+并查集)
- C++中的智能指针问题
- 快速排序算法
- 《初学JAVA》
- 利用栈求逻辑运算表达式的真值
- scrapy
- Uva10054 无向图打印任意欧拉回路
- java 对reids的操作 切片与非切片连接池的应用
- .net新手之学习之路一
- 移动GPU通用计算现状与展望
- spark下测试akka的分布式通讯功能
- JS判断字符串变量是否含有某个字串的方法
- Apache Common HttpClient使用之七种武器
- jedis 中出现ArrayIndexOutOfBoundsException异常的解决方法
- 自定义easy-ui validatebox 如maxLength()等等校验规则