输入:
第一行:关系数目n(n个关系)
第二行-第n行:具体哪两个元素有关系
输出:
有最多元素的集合的元素数
注:若1,2有关系,2,3有关系,则1,3也有关系,即123在一个集合中
#include<iostream>
using namespace std;
#define N 10000001
int Tree[N];
int findRoot(int x){
if(Tree[x]==-1) return x;
else{
int tmp=findRoot(Tree[x]);
Tree[x]=tmp;
return tmp;
}
}
int sum[N];
int main(){
int n;
while(cin>>n){
for(int i=0;i<=N;i++){
Tree[i]=-1;
sum[i]=1;
}
while(n--!=0){
int a,b;
cin>>a>>b;
a=findRoot(a);
b=findRoot(b);
if(a!=b){
Tree[a]=b;
sum[b]+=sum[a];
}
}
int ans=1;
for(int i=1;i<=N;i++){
if(Tree[i]==-1&&sum[i]>ans)
ans=sum[i];
}
cout<<ans<<endl;
}
return 0;
}