这道题,看懂了,就是一道简单的并查集模板题,就是多一个记数的桶。
AC
code:
#include<iostream>
#include<map>
using namespace std;
int fa[105];
int f(int x){
if(fa[x]==x)return x;//找到老祖宗了
return fa[x]=f(fa[x]);//寻找老祖宗,压缩路径
}
map<int,int> t;//建一个桶数组
int main(){
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++)fa[i]=i;//初始化,自己的父亲是自己(˘•ω•˘)
for(int i=1;i<=k;i++){
int alpha/*α*/,beta/*β*/;
cin>>alpha>>beta;
fa[f(alpha)]=f(beta);//α与β联合
}
for(int i=1;i<=n;i++){
t[f(i)]++;
}
cout<<t.size()<<' ';//有𝐭的长度个家
int maxn=0;
for(auto it=t.begin();it!=t.end();it++){
maxn=max(maxn,it->second);
}
cout<<maxn;//不解释
return 0;
}