hdu 1878 欧拉回路 (欧拉回路)

来源:互联网 发布:网络炒作方案 编辑:程序博客网 时间:2024/05/18 02:46
//1.联通图 2.顶点度数都为偶数 ,则存在欧拉回路。# include <stdio.h># include <algorithm># include <string.h>using namespace std;int father[1010];int vis[1010][1010],du[1010];int find(int x){    if(father[x]==x)        return x;    return father[x]=find(father[x]);}int main(){    int n,m,i,a,b,cot;    while(~scanf("%d",&n),n)    {        for(i=1;i<=n;i++)            father[i]=i;        scanf("%d",&m);        memset(vis,0,sizeof(vis));        memset(du,0,sizeof(du));        while(m--)        {            scanf("%d%d",&a,&b);            if(!vis[a][b])            {                if(a>b)                    swap(a,b);//小的前面,保证父亲节点为最小的那个                vis[a][b]=vis[b][a]=1;                du[a]++;                du[b]++;                int fa=find(a);                int fb=find(b);                if(fa!=fb)                {                    father[fb]=fa;                }            }        }        cot=0;        for(i=1;i<=n;i++)        {            if(du[i]%2==0&&find(i)==1)            {                cot++;            }        }        if(cot==n)            printf("1\n");        else            printf("0\n");    }    return 0;}

1 0
原创粉丝点击