• hdu1272小希的迷宫(并查集判断回路和是否连通)


    传送门

    迷宫中不能有回路,还要连通

    如果最后集合数是一个那就是连通,否则不联通

    要合并的两个顶点在相同集合内,表示出现了回路

    输入时注意一下

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int f[100005];
     4 int getf(int v)
     5 {
     6     if(f[v]==v)return v;
     7     else
     8     {
     9         f[v]=getf(f[v]);
    10         return f[v];
    11     }
    12 }
    13 void merge(int v,int u)
    14 {
    15     int t1,t2;
    16     t1=getf(v);
    17     t2=getf(u);
    18     if(t1!=t2)
    19     {
    20         f[t2]=t1;
    21         
    22     }
    23     return;
    24 }
    25 void init()
    26 {
    27     for(int i=1; i<100005; i++)
    28     {
    29         f[i]=i;
    30     }
    31 }
    32 int data[100005];
    33 int main()
    34 {
    35     int x,y,num=0,maxx=-1,ans=0,flag=0;
    36     memset(data,0,sizeof(data));
    37     init();
    38     while(scanf("%d %d",&x,&y))
    39     {
    40         if(x==-1&&y==-1)break;
    41         if(x!=0&&y!=0)
    42         {
    43             if(getf(x)==getf(y))flag=1;
    44             data[x]=x;
    45             data[y]=y;
    46             merge(x,y);
    47             //int temp=x>y?x:y;
    48         //    maxx=maxx>temp?maxx:temp;
    49         }
    50         if(x==0&&y==0)
    51         {
    52             for(int i=1; i<=100005; i++)
    53             {
    54                 if(data[i])
    55                 {
    56                     if(getf(i)==i)ans++;
    57                 }
    58             }
    59             if(flag||ans>1)
    60             {
    61                 printf("No
    ");
    62             }
    63             else
    64             {
    65                 printf("Yes
    ");
    66             }
    67             num=0,maxx=-1,ans=0,flag=0;
    68             memset(data,0,sizeof(data));
    69             init();
    70         }
    71     }
    72     return 0;
    73 }
    View Code
  • 相关阅读:
    100-days: twenty-four
    100-days: twenty-three
    100-days: twenty-two
    100-days: twenty-one
    100-days: twenty
    [NOI 2016]循环之美
    [NOI 2015]寿司晚宴
    [BZOJ 2655]calc
    [Codeforces 888G]Xor-MST
    [BZOJ 2839]集合计数
  • 原文地址:https://www.cnblogs.com/fqfzs/p/9991546.html
Copyright © 2020-2023  润新知