zoukankan      html  css  js  c++  java
  • hdu1272 并查集

    如果要输出yes 需要满足

    1  这个图连通

    2  没有回路

    3  0 0 也是yes

    看它有没有回路 在un的时候做一次判断就可以了

    然后是判断连通 在这里采用的方法是扫一遍 如果这个点出现过就判断(用vis看是否出现) 然后如果它作为根节点 最后根节点只能是一个

    和上次做欧拉用的判断连通办法不一样 上一个更省时间不过更麻烦吧..

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<map>
    using namespace std;
    int fa[100050];
    int vis[100050];
    bool ok;
    void init()
    {
        for(int i=0;i<100040;i++)
        {
            fa[i]=i;
            vis[i]=0;
        }
        ok=true;
    }
    int find(int i)
    {
        return fa[i]==i?i:find(fa[i]);
    }
    void un(int a,int b)
    {
        int aa=find(a);
        int bb=find(b);
        if(aa==bb)
            ok=false;
        else
            fa[aa]=bb;
        return ;
    }
    int main()
    {
        int a,b;
        while(~scanf("%d%d",&a,&b))
        {
            if(a==0&&b==0)
                printf("Yes
    ");
            else
            {
    
    
            if(a==-1&&b==-1)
                break;
            init();
            un(a,b);
            vis[a]=1;
            vis[b]=1;
            while(~scanf("%d%d",&a,&b))
            {
                if(a==0&&b==0)
                    break;
                un(a,b);
                vis[a]=1;
                vis[b]=1;
            }
            int many=0;
            for(int i=0;i<100040;i++)
            {
                if(fa[i]==i&&vis[i]==1)
                {
                    many++;
                }
            }
            if(many!=1)
                ok=false;
            if(ok==true)
                printf("Yes
    ");
            else printf("No
    ");
            }
        }
    }
    

      

  • 相关阅读:
    Mac 国内安装homebrew办法
    字符串方法及注释
    文件的操作
    集合
    Mac下CVS文件编码转换
    字符串格式化
    postman常用断言的一些内置方法
    get与post区别
    pygame知识点(持续更新)
    记录第一次使用
  • 原文地址:https://www.cnblogs.com/rayrayrainrain/p/5189788.html
Copyright © 2011-2022 走看看