zoukankan      html  css  js  c++  java
  • 并查集之寻找某元素所在集合的元素个数----the suspects

    另外建立一个数组NUM[],每次FIND(x)如果相等之后都将NUM[X]++,简单题。。。

     1 #include<cstdio>
     2 #include<iostream>
     3 using namespace std;
     4 
     5 #define N 40000
     6 int pre[N];
     7 int num[N];
     8 int rank[N];
     9 
    10 void init()
    11 {
    12     for(int i=0; i<N; i++)
    13     {
    14         num[i]=1;
    15         pre[i]=i;
    16         rank[i]=0;
    17     }
    18 }
    19 
    20 int find(int x)
    21 {
    22     int r=x;
    23     while(r!=pre[r])
    24         r=pre[r];
    25     int i=x,j;
    26     while(i!=r)
    27     {
    28         j=pre[i];
    29         pre[i]=r;
    30         i=j;
    31     }
    32     return r;
    33 }
    34 void merge(int x,int y)
    35 {
    36     int fx=find(x);
    37     int fy=find(y);
    38     if(fy==fx)   return;
    39     if(rank[fx]>rank[fy])
    40     {
    41         pre[fy]=fx;
    42         num[fx]+=num[fy];
    43     }
    44     else
    45     {
    46         pre[fx]=fy;
    47         if(rank[fx]==rank[fy])
    48             rank[fy]++;
    49         num[fy]+=num[fx];
    50     }
    51 }
    52 int main()
    53 {
    54 
    55     int n,m;
    56     while(~scanf("%d%d",&n,&m))
    57     {
    58         init();
    59         if(n==0&&m==0)  break;
    60         if(m==0)
    61         {
    62             printf("1
    ");
    63             continue;
    64         }
    65         while(m>0)
    66         {
    67             m--;
    68             int t,first,next;
    69             cin>>t>>first;
    70             for(int i=1; i<t; i++)
    71             {
    72                 scanf("%d",&next);
    73                 merge(first,next);
    74                 first=next;
    75             }
    76         }
    77         int x=find(0);
    78         cout<<num[x]<<endl;
    79     }
    80     return 0;
    81 }
  • 相关阅读:
    Redis 常用命令
    docker安装与配置nginx详细过程
    docker安装与配置redis详细过程
    kettle 查询 tinyint 值为 Y,kettle 查询 tinyint 为布尔值
    kettle 乱码问题处理方案
    Vue响应式原理
    ES6学习笔记1
    xlxs转成Unicode编码的json文件
    移动、PC图片拖拽缩放2
    util
  • 原文地址:https://www.cnblogs.com/calmwithdream/p/4925615.html
Copyright © 2011-2022 走看看