HDU 1856 More is better

题目大意:

在一群人里挑选一些人,这些必须都是朋友关系,关系可以是直接的也可以是间接的。


解题思路:

非常简单明了的一道并查集,但是不是求一共有几个集合,而是求每个集合中的元素个数,进而求出最大值,只需要在合并两个集合时处理一下,让这两个集合的元素个数也合并一下就行了。接下来只需要找出最大值即可。要注意的一个地方就是:当n=0时,要输出1。


#include
#include
#include
#define LL long long
#define db double
#define maxn 10000000
#define max(a,b) ((a>b)?(a):(b))
#define min(a,b) ((amaxx) maxx=a;
			if (b>maxx) maxx=b;
			merge(a,b);
		}
		int Max=0;
		for (int i=1;i<=maxx;i++)
			if (num[i]>Max) Max=num[i];
		printf("%d\n",Max);
	}
	return 0;
}


你可能感兴趣的:(ACM题目,并查集)