题解
2026-08-13 13:14:10
发布于:江苏
0阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
const int MAXN = 200005;
int fa[MAXN], sz[MAXN];
int find(int x){ return fa[x] == x ? x : fa[x] = find(fa[x]); }
void uni(int a, int b){
a = find(a); b = find(b);
if(a != b){ fa[a] = b; sz[b] += sz[a]; }
}
int main(){
int n, m;
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; i++){ fa[i] = i; sz[i] = 1; }
for(int i = 0; i < m; i++){
int a, b;
scanf("%d%d", &a, &b);
uni(a, b);
}
int ans = 1;
for(int i = 1; i <= n; i++){
if(find(i) == i) ans = max(ans, sz[i]);
}
printf("%d\n", ans);
return 0;
}
这里空空如也




有帮助,赞一个