这个题也只要用并查找的模版,然后再找最大的树集合。

代码:

View Code
 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 }

 

posted on 2012-08-04 10:31  xinmenghuairi  阅读(135)  评论(0编辑  收藏  举报