UVa 10596 - Morning Walk

来源:互联网 发布:彩票源码论坛php 编辑:程序博客网 时间:2024/05/17 09:15

纯欧拉回路的题,连通性以及度数,注意 r==0 时特殊情况的处理(此时应该是Not Possible的) ~

代码如下:

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>int p[200+5];int find(int x){    return p[x] == x ? x : find(p[x]);}int main(){#ifdef state    freopen("sample.txt","r",stdin);#endif    int n,r,i;    int a[10000+5][3],io[200+5];      while(scanf("%d%d",&n,&r)!=EOF)    {        if(r == 0)        {            printf("Not Possible\n");            continue;        }        int flag = 0;        memset(a,0,sizeof(a));        memset(io,0,sizeof(io));        for(i = 0; i < n; i++)            p[i] = i;        for(i = 0; i < r ; i++)        {            scanf("%d%d",&a[i][0],&a[i][1]);            int p_in = a[i][0] , p_out = a[i][1];            io[p_in]++;            io[p_out]++;            p_in=find(p_in);            p_out=find(p_out);            if(p_in != p_out)                p[p_in] = p_out;        }        int ok = 1;        for(i = 0 ; !io[i] ; i++);        int t = find(i);        for( i++; i <= n ; i++ )            if(io[i] && find(i) != t)            {                ok = 0;                break;            }        if(ok)            for( i = 0; i <= n; i++ )                if( io[i] % 2 )                {                    flag = 1;                    break;                }        if(flag || !ok)            printf("Not Possible\n");        else            printf("Possible\n");    }    return 0;}

原创粉丝点击