HDU_1856_More is better
http://acm.hdu.edu.cn/showproblem.php?pid=1856简单的并查集
题意:给出在同一个集合的2个元素,问最后那个最多元素的集合有多少个元素,注意,每个元素可以独立存在,因此至少有1个
#include <iostream>using namespace std;int pre, con;int find (int a){ int b = a; while (a != pre) a = pre; while (b != a) { int t = b; b = pre; pre = a; } return a;}int main(){ int n, i, a, b, A, B, res; while (scanf ("%d", &n) != EOF) { res = 1; //这里初始化一定是1,因为下面的合并操作有可能一次都不执行,况且至少每个集合有1个人 for (i = 1; i <= 10000000; i++) pre = i, con = 1; for (i = 0; i < n; i++) { scanf ("%d%d", &a, &b); A = find (a); B = find (b); if (A != B) { pre = A; con += con; if (res < con) res = con; } } printf ("%d\n", res); } return 0;}
页:
[1]