首页 > 代码库 > hdu 1856 More is better

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     else13        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         else28         {29             par[a] = b;30             M[b] += M[a];31         }32     }33     else34       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\n",Max);57 58     }59     return 0;60 }