10054项链

来源:互联网 发布:java编程实战宝典 pdf 编辑:程序博客网 时间:2024/04/28 01:05

注意 端点相同的两条边可能重复出现、输出顺序!!

#include<stdio.h>#include<string.h>int gra[60][60];int d[60];int vis[60][60];int uu[1010];int vv[1010];int top;void dfs(int u){int v;for(v = 1; v < 60;v++){if(gra[u][v]){gra[u][v] --;gra[v][u] --;dfs(v);//printf("%d %d\n",v,u);uu[top] = u;vv[top++] = v;}}}int main(){//freopen("input.txt","r",stdin);////freopen("out.txt","w",stdout);int t;scanf("%d",&t);int tt = 1;while(t--){int n;top = 0;scanf("%d",&n);memset(gra,0,sizeof(gra));memset(d,0,sizeof(d));memset(vis,0,sizeof(vis));memset(uu,0,sizeof(uu));memset(vv,0,sizeof(vv));for(int i = 0; i < n;i++){int u,v;scanf("%d%d",&u,&v);gra[u][v] ++;gra[v][u] ++;d[u]++;d[v]++;}int cnt = 0;for(int i = 1;i < 60;i++){if(d[i]%2){cnt++;}}printf("Case #%d\n",tt++);if(cnt){puts("some beads may be lost");}else{for(int i = 1;i < 60;i++){if(d[i]){dfs(i);break;}}top--;while(top>=0){printf("%d %d\n",uu[top],vv[top]);top--;}}if(t) putchar('\n');}}


0 0
原创粉丝点击