现在的位置: 首页 > 综合 > 正文

hdu 1878 欧拉回路

2018年12月30日 ⁄ 综合 ⁄ 共 628字 ⁄ 字号 评论关闭

判断欧拉路是否存在的方法
有向图:图连通,有一个顶点出度大入度1,有一个顶点入度大出度1,其余都是出度=入度。
无向图:图连通,只有两个顶点是奇数度,其余都是偶数度的。
判断欧拉回路是否存在的方法
有向图:图连通,所有的顶点出度=入度。

无向图:图连通,所有顶点都是偶数度。

#include"stdio.h"
#include<string.h>
int link[1010],f[1010];
int find(int a)
{
    if(a!=f[a])
        f[a]=find(f[a]);
    return f[a];
}
int main()
{
    int i,n,m,flag,a,b,x,y;
    while(scanf("%d",&n),n)
    {
        for(i=1;i<=n;i++)
            f[i]=i;
        memset(link,0,sizeof(link));
        scanf("%d",&m);
        for(i=0;i<m;i++)
        {
            scanf("%d%d",&a,&b);
            link[a]++;
            link[b]++;
            x=find(a);y=find(b);
            if(x!=y)
             f[x]=y;
        }
        flag=find(f[1]);
        for(i=2;i<=n;i++)
        {
            if(find(i)!=flag)
                break;
        }
        if(i<=n){puts("0");continue;}
        for(i=1;i<=n;i++)
        {
            if(link[i]%2!=0)
                break;
        }
        if(i<=n)puts("0");
        else puts("1");
    }
    return 0;
}

抱歉!评论已关闭.