首页 > 代码库 > 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 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。