题目链接:http://www.rqnoj.cn/problem/343
题解:
并查集的应用,将祖先相同的统计到一起,最终求出最大的即可
AC代码:
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN =5000 + 5;
int pre[MAXN];
int a[MAXN];
void Inital(int n) {
for(int i = 1; i <= n; i++)
pre[i] = i;
}
int find(int x) {
if(x != pre[x])
pre[x] = find(pre[x]);
return pre[x];
}
void Join(int x, int y) {
x = find(x), y = find(y);
pre[y] = x;
}
int main() {
int n, m, x, y;
cin >> n >> m;
Inital(n);
for(int i = 0; i < m; i++) {
cin >> x >> y;
Join(x, y);
}
int cnt = 0;
for(int i = 1; i <= n; i++) {
a[find(i)]++;
cnt = max(a[find(i)], cnt);//寻找最大的cnt
}
cout << cnt << endl;
return 0;
}