• hdu 1856 More is better


    并查集 简单题

     1 #include <iostream>
     2 #include <stdio.h>
     3 #include <stdlib.h>
     4 #define N 10000005
     5 using namespace std;
     6 int par[N];
     7 int M[N];
     8 int Find(int x)
     9 {
    10     if(par[x] == x)
    11        return x;
    12     else
    13        par[x] = Find(par[x]);
    14      return par[x];
    15 }
    16 void Union(int x,int y)
    17 {
    18     int a=Find(x);
    19     int b=Find(y);
    20     if(a != b)
    21     {
    22         if(M[a] >= M[b])  //  这就是要比较了
    23         {
    24             par[b] = a;
    25             M[a] += M[b];
    26         }
    27         else
    28         {
    29             par[a] = b;
    30             M[b] += M[a];
    31         }
    32     }
    33     else
    34       return ;
    35 }
    36 int main()
    37 {
    38     freopen("input.txt","r",stdin);
    39     int i,x,y,n;
    40     while(scanf("%d",&n)!=EOF)
    41     {
    42        for(i = 0;i <= N; i++)  // 最早的初始化
    43        {
    44            par[i] = i;
    45            M[i] = 1;
    46        }
    47        for(i = 1; i <= n; i++)
    48        {
    49           scanf("%d%d",&x,&y);
    50           Union(x,y);
    51        }
    52        int Max = -1;
    53        for(i = 0; i <= N; i++)
    54           if(M[i] > Max)
    55             Max = M[i];  //  找出亲戚数最多的那个数字max,输出
    56        printf("%d
    ",Max);
    57 
    58     }
    59     return 0;
    60 }
  • 相关阅读:
    CVS使用经验谈(zz from chinaunix.net)
    登黄山
    登黄山之二
    Dennis Ritchie 去世
    观迎客松
    从程序员角度看ELF
    再次回到这里
    异步时钟下跨时钟域信号处理
    Fedora14下的Novas和Synopsys
    Oralce导入\导出
  • 原文地址:https://www.cnblogs.com/imLPT/p/3861914.html
Copyright © 2020-2023  润新知