UVA - 10054 The Necklace
来源:互联网 发布:win系统传文件到mac 编辑:程序博客网 时间:2024/05/23 02:01
#include<cstdio>#include<cstring>int cur[60][60];int dgr[60];int f[60];int find(int x) {return f[x] == x ? x:(f[x] = find(f[x]));}void dfs(int u) {int v;for(int v = 1; v <= 50; v++) {if(cur[u][v]) {cur[u][v]--;cur[v][u]--;dfs(v);printf("%d %d\n",v,u);}}}int main() {int test;int num1, num2;int num;int count = 1;int i , j;scanf("%d",&test);while(test--) {for(i = 1; i <= 50 ; i++)f[i] = i;memset(cur,0,sizeof(cur));memset(dgr,0,sizeof(dgr));scanf("%d",&num);for( i = 0; i < num; i++) {scanf("%d%d",&num1, &num2);dgr[num1]++;dgr[num2]++;cur[num1][num2]++;cur[num2][num1]++;if(find(num1) != find(num2))f[find(num1)] = find(num2);}int mark = 1;for(i = 0; !dgr[i];i++);for( j = i+1; j <= 50; j++)if(dgr[j] && find(i) != find(j)) {mark = 0;break;}if(mark) {for( i = 1; i <= 50; i++) {if(dgr[i] % 2 != 0) {mark = 0;break;}}}printf("Case #%d\n",count++);if(!mark) printf("some beads may be lost\n");else {for(i = 0; !dgr[i];i++);dfs(i);}if(test)printf("\n");}return 0;}
题目大意:给出一系列数字,要求判断是否能形成欧拉回路,图是无向图
解题思路:先判断是否是一个连通图,再判断一下看是不是欧拉回路,如果是的话,就进行输出
0 0
- uva 10054 - The Necklace
- uva 10054 - The Necklace
- UVa 10054 - The Necklace
- UVA 10054 The Necklace
- Uva-10054-The Necklace
- uva 10054 - The Necklace
- uva 10054 - The Necklace
- uva 10054 - The Necklace
- UVA 10054 The Necklace
- uva 10054 The Necklace
- UVa:10054 The Necklace
- UVa 10054 - The Necklace
- UVA 10054 - The Necklace
- UVA 10054 The Necklace
- UVA - 10054 The Necklace
- UVA 10054 The Necklace
- UVA 10054 - The Necklace
- UVA - 10054 The Necklace
- Qt音乐播放器制作(一)Easy Player
- CSS学习笔记01-块元素和内联元素.html
- 数据的表示
- Spring4.x IOC容器的初始化,开启log4j日志
- hadoop2.4.0 安装配置
- UVA - 10054 The Necklace
- uva10131
- C语言malloc和free
- 7.Eclipse中创建新Maven项目
- CSS学习笔记02-定位和浮动.html
- uva 10131(最长递增子序列)
- CSS学习笔记03-圆.html
- A brief introduction to VXLAN
- CSS学习笔记04-垂直居中-内容居中-单行.html