zoukankan      html  css  js  c++  java
  • HDU 1272 小希的迷宫 (无向图判环)

    题意:给出一张无向图,判定是否有环,判定是否为一棵树;

    思路:并查集判环,唯一祖先;

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    #define M 0x3f3f3f3f
    int fa[500010],mark[500010];
    void init()
    {
        for(int i=0;i<=500010;i++)
            fa[i]=i;
    }
    int fin(int x)
    {
        while(x!=fa[x]) x=fa[x];
        return x;
    }
    void combine(int a,int b)
    {
        int t1=fin(a);
        int t2=fin(b);
        if(t1!=t2)
        {
            fa[t1]=t2;
        }
    }
    int main()
    {
        int n,m,i,j,k,flag,cnt,num,ans,amin,amax;
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            if(n==-1&&m==-1) break;
            if(n==0&&m==0)
            {
                printf("Yes
    ");continue;
            }
            init();
            memset(mark,0,sizeof(mark));
            flag=0;amax=0;amin=M;
            while(1)
            {
                if(n==0&&m==0) break;
                if(amax<n) amax=n;
                if(amax<m) amax=m;
                if(amin>n) amin=n;
                if(amin>m) amin=m;
                if(fin(n)==fin(m))//判定是否有环
                {
                    flag=1;
                }
                combine(n,m);
                mark[n]=1;mark[m]=1;
                scanf("%d%d",&n,&m);
            }
            if(flag)
            {
                printf("No
    ");continue;
            }
            ans=-1;cnt=0;
            for(i=amin;i<=amax;i++)//判定是否为树
            {
                if(mark[i]&&fin(i)!=ans)
                {
                    ans=fin(i);
                    cnt++;
                }
            }
            if(cnt==1) printf("Yes
    ");
            else printf("No
    ");
        }
        return 0;
    }
  • 相关阅读:
    go语言基础知识
    用vim写go代码——vim-go插件
    Java开发用H2数据库
    css控制文本对齐
    Linux用awk处理文本数据
    Linux修改文件编码
    Linux查看文本文件编码
    go语言学习笔记
    Druid
    spring cloud学习--eureka 02
  • 原文地址:https://www.cnblogs.com/dashuzhilin/p/4415587.html
Copyright © 2011-2022 走看看