zoukankan      html  css  js  c++  java
  • hdu 1272 并查集

    hdu 1272 小希的迷宫

    题意:判断图是否连通且无环;

    思路:输入边的两点,若两点的父节点相同,则存在环;只有一个根节点则图连通;当输入"0 0"时输出"Yes"

     1 #include<cstdio>
     2 #include<cstring>
     3 
     4 int set[100000 + 50];
     5 bool visit[100000 + 50];
     6 bool flag;
     7 int find(int x)
     8 {
     9     return x == set[x]?x:set[x] = find(set[x]);
    10 }
    11 
    12 void merge(int a, int b)
    13 {
    14      int i = find(a);
    15      int j = find(b);
    16      if(i != j) set[i] = j;
    17      else flag = true;
    18      visit[a] = visit[b] = true;
    19      return ;
    20 }
    21 
    22 int main()
    23 {
    24     int a,b;
    25     while(~scanf("%d%d",&a,&b))
    26     {
    27         if(a == -1 && b == -1)   break;
    28         else if(a == 0 && b == 0)
    29         {
    30             printf("Yes
    ");
    31             continue;
    32         }
    33         else
    34         {
    35             for(int i = 1; i <= 100000; i++)
    36                 set[i] = i;
    37             merge(a,b);
    38         }
    39         while(scanf("%d%d",&a,&b) && (a||b))
    40         {
    41             merge(a,b);
    42         }
    43         int num = 0;
    44         for(int i = 1; i <= 100000; i++)
    45         {
    46              if(visit[i] && set[i] == i) num++;
    47         }
    48         if(!flag && num == 1) printf("Yes
    ");
    49         else printf("No
    ");
    50         flag = false;
    51         memset(visit,0,sizeof(visit));
    52     }
    53     return 0;
    54 }
  • 相关阅读:
    HDU多校第六场——HDU6638 Snowy Smile(线段树区间合并)
    java
    java
    java
    java
    java
    python
    appium
    python
    python
  • 原文地址:https://www.cnblogs.com/Pos-Proteus/p/4754650.html
Copyright © 2011-2022 走看看