简单题,直接代码了
#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
#define LEN 10000002
int p[LEN];
int len[LEN];
void init() {
int i;
for(i = 1; i < LEN; i++) {
p[i] = i;
}
}
int find(int x) {
return p[x] == x ? x : (p[x] = find(p[x]));
}
void make_set(int x, int y) {
int p1 = find(x);
int p2 = find(y);
if(p1 != p2) {
p[p1] = p2;
}
}
int main() {
int n;
int i, j;
while(scanf("%d", &n) != EOF) {
int a, b;
int _max = 1;
init();
memset(len, 0, sizeof(len));
for(i = 0; i < n; i++) {
scanf("%d%d", &a, &b);
make_set(a, b);
}
for(i = 1; i < LEN; i++) {
int tmp = find(p[i]);
++len[tmp];
if(len[tmp] > _max) {
_max = len[tmp];
}
}
printf("%d\n", _max);
}
return 0;
}