#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
#define MANV 30005
int parent[MANV];
int find(int x){
if(parent[x]==x)
return x;
else{
parent[x]=find(parent[x]); //路径压缩
return parent[x];
}
}
void union_friend(int x,int y){
int p1=find(x);
int p2=find(y);
parent[p1]=p2;
}
int main(){
int n,m,t,a,b;
cin>>n>>m;
for(int i=1;i<=n;i++){
parent[i]=i;
}
while(m--){
cin>>t;
for(int i=0;i<t;i++){
if(i==0)
cin>>a;
else{
cin>>b;
union_friend(a,b);
}
}
}
int root[MANV]={0},mx=1;
for(int i=1;i<=n;i++){
int t=find(i);
root[t]++;
if(root[t]>mx)
mx=root[t];
}
cout<<mx<<endl;
return 0;
}
7-25 朋友圈 (25 分)【并查集】
最新推荐文章于 2021-07-19 23:19:21 发布