UVA - 10596 Morning Walk

来源:互联网 发布:微场景制作软件推荐 编辑:程序博客网 时间:2024/05/21 17:00

题目大意:给你几条路径,看这些路径能否构成欧拉回路

解题思路:这是一个无向图,构成欧拉回路的话,就要满足两个条件,1.是个连通图 2.节点度数为偶数

#include<cstdio>#include<cstring>int p[210];int find(int x) {return p[x] == x?x:(p[x] = find(p[x]));}int main() {int N,R;int dgr[299];while(scanf("%d %d", &N, &R) != EOF) {if( R == 0){printf("Not Possible\n");continue;}memset(dgr,0,sizeof(dgr));for(int i = 0;i < N;i++)p[i] = i;int num1,num2;for(int i = 0; i < R; i++) {scanf("%d %d", &num1,&num2);if(find(num1) != find(num2))p[find(num1)] = find(num2);dgr[num1]++;dgr[num2]++;}int ok = 1;for(int i = 0; !dgr[i];i++)//!dgr[i]?for(int j = i+1;j<N;j++)if(dgr[j] && find(i) != find(j)){ok = 0;break;}int num = 0;if(ok) {for(int i = 0; i < N; i++) if(dgr[i] % 2 != 0)num++;}if(!ok || num>0)printf("Not Possible\n");elseprintf("Possible\n");}return 0;}


0 0
原创粉丝点击