• HDU1272 小希的迷宫


    用并查集判断图是否连通,以及是否存在环~

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<vector>
    #include<unordered_map>
    using namespace std;
    const int maxn=1e6+14;
    const int inf=1e9;
    int father[maxn],isRoot[maxn],flag,visit[maxn];
    void init () {
        for (int i=0;i<maxn;i++) father[i]=i;
        flag=0;
        fill (isRoot,isRoot+maxn,0);
        fill (visit,visit+maxn,0);
    }
    int findfather (int x) {
        int a=x;
        while (x!=father[x]) x=father[x];
        while (a!=father[a]) {
            int z=a;
            a=father[a];
            father[z]=x;
        }
        return x;
    }
    void Union (int a,int b) {
        int faA=findfather(a);
        int faB=findfather(b);
        if (faA!=faB) father[faA]=faB;
    }
    int main () {
        while (1) {
            int flag=0,x,y;
            init ();
            while (1) {
                scanf ("%d %d",&x,&y);
                if (x==0&&y==0) break; 
                if (x==-1&&y==-1) return 0;
                if (findfather(x)==findfather(y)) flag++;
                visit[x]=1;visit[y]=1;
                Union (x,y);
            }
            for (int i=0;i<maxn;i++) if (visit[i]) isRoot[findfather(i)]++;
            int ans=0;
            for (int i=0;i<maxn;i++) if (isRoot[i]&&visit[i]) ans++;
            if (ans>1) flag++; 
            //printf ("%d
    ",ans);
            if (flag==0) printf ("Yes
    ");
            else printf ("No
    ");
        }
        return 0;
    }
  • 相关阅读:
    转职游戏策划第四周
    转职游戏策划第三周
    HTML表单验证库SMValidator
    win7通过easyBCD引导ubuntu
    SWF混淆工具(智能提取需要混淆的字段)
    图文混排组件(RichTextField)
    windows下gvim使用vundle插件
    AirMVC
    再战中原之地图编辑器
    再战中原之菜单系统
  • 原文地址:https://www.cnblogs.com/zhanglichen/p/12305544.html
Copyright © 2020-2023  润新知