uva10596 - Morning Walk

来源:互联网 发布:redis 数据库命令大全 编辑:程序博客网 时间:2024/05/17 01:41

看是否连通,是否是欧拉回路。注意r=0是输出Not Possible,虽然我认为r=0是应该输出Possible

#include <iostream>#include <cstring>#include<cstdio>#include <queue>using namespace std ;struct load{    int x,y;};int flag,n,r;load lo[11000];int f[210];int find(int x){    return f[x]==x?x:f[x]=find(f[x]);}void liangtong(){    int i;    for(i=0; i<n; ++i)        f[i]=i;    for(i=0; i<r; ++i)    {        int e=find(f[lo[i].x ]);        int v=find(f[lo[i].y ]);        if(e!=v)        {            f[e]=v;        }    }    int ans=find(lo[0].x);    for(i=1; i<r; ++i)    {        if(ans!=find(lo[i].x ))        {            flag=0;            return;        }    }}int main(){    //freopen("in.txt","r",stdin);    // int n,r;    while(~scanf("%d%d",&n,&r))    {        int i;        flag=1;        int shu[210]= {0};        //int in[210]={0};        for(i=0; i<r; ++i)        {            scanf("%d%d",&lo[i].x,&lo[i].y);            ++shu [lo[i].x];            ++shu[lo[i].y];        }        if(r==0)        {            printf("Not Possible\n");continue;        }        for(i=0; i<n; ++i)        {            if(shu[i]%2==1)            {                flag=0;                break;            }        }        if(!flag)        {            printf("Not Possible\n");            continue;        }        liangtong();        if(!flag)        {            printf("Not Possible\n");        }        else printf("Possible\n");    }    return 0 ;}


 

原创粉丝点击