POJ 1856 More is better

一个并查集 计算每个集合的元素 找出元素最多的那个集合,输出元素的个数
输入n=0时也应该输出1, 难点就在于,怎么计算集合的元素个数,其实只要在初始的时候每个元素都初始为1,
然后合并集合的时候把两个集合元素加一起
#include 
#include 
#include 

const int MAX = 10000005;
int pre[MAX],rank[MAX],maxx;


void init(){
	int i;
	for(i=1;imaxx)maxx = rank[fy];
	}
}


int main(){
	int i,n,x,y;
	while(scanf("%d",&n)!=EOF){
		if(n==0){
			printf("1\n");
			continue;
		}
		init();
		maxx = INT_MIN;
		for(i=0;i



你可能感兴趣的:(并查集,杭电,杭电,hdu,并查集)