这个题也只要用并查找的模版,然后再找最大的树集合。
代码:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 #include<iostream> 2 using namespace std; 3 int set[10000001],c[10000001]; 4 void mst() 5 { 6 for(int i=1;i<10000001;i++) 7 { 8 set[i]=i; 9 c[i]=0; 10 } 11 } 12 13 int find(int x) 14 { 15 if(x!=set[x]) 16 set[x]=find(set[x]); 17 return set[x]; 18 } 19 void memg(int x,int y) 20 { 21 x=find(x); 22 y=find(y); 23 if(x==y) 24 return ; 25 else 26 set[x]=y; 27 } 28 29 int main() 30 { 31 int n; 32 int i,a,b; 33 while(cin>>n) 34 { 35 mst(); 36 for(i=1;i<=n;i++) 37 { 38 cin>>a>>b; 39 memg(a,b); 40 } 41 for(i=1;i<10000001;i++) 42 { 43 a=find(i); 44 ++c[a]; 45 } 46 int m=-1; 47 for(i=1;i<10000001;i++) 48 { 49 if(m<c[i]) 50 m=c[i]; 51 } 52 cout<<m<<endl; 53 } 54 }