• 欧拉回路 HDU


    欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个图,问是否存在欧拉回路?

    Input

    测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是节点数N ( 1 < N < 1000 )和边数M;随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号(节点从1到N编号)。当N为0时输入结 
    束。

    Output

    每个测试用例的输出占一行,若欧拉回路存在则输出1,否则输出0。 

    Sample Input

    3 3
    1 2
    1 3
    2 3
    3 2
    1 2
    2 3
    0

    Sample Output

    1
    0

    code

    #include<stdio.h>
    #include<string.h>
    int fa[1010],k[1010];
    int Get(int x){return x==fa[x]?x:fa[x]=Get(fa[x]);}
    
    int main()
    {
        int n,m;
        while(scanf("%d",&n) && n)
        {        
            memset(k,0,sizeof(k));
            for(int i=1;i<=n;++i) fa[i]=i;
            scanf("%d",&m);
            for(int i=1;i<=m;++i)
            {
                int x,y;
                scanf("%d%d",&x,&y);
                if(Get(x)!=Get(y)) fa[Get(x)]=Get(y);
                k[x]++,k[y]++;
            }
            bool flag=false;
            int src=Get(1);
            for(int i=1;i<=n;++i)
            {
                if(Get(i)!=src) {flag=true;}
                if(k[i]%2) {flag=true;}
            }
            if(flag)
                printf("0
    ");
            else 
                printf("1
    ");
        }
    }
  • 相关阅读:
    链表相交
    环路检测
    lambada表达式对集合的过滤和相互转换
    lambda表达式对集合的遍历
    centos7常用命令
    小程序文件
    扫码登录
    位操作
    使用json-lib转换对象为字符串时的特殊处理
    javac 编译异常总结
  • 原文地址:https://www.cnblogs.com/qseer/p/9822460.html
Copyright © 2020-2023  润新知