hdu 1856
1 //貌似可以用離散化做,本人菜鳥,搞不定,所以大家將就著看吧。
2 #include<stdio.h>
3 #include<string.h>
4 #include<algorithm>
5 using namespace std;
6 #define max(x,y) (x)>(y)?(x):(y)
7 #define maxn 10000000
8 int fa[maxn];
9 int rank[maxn];
10 int ans;
11 int n;
12 void init()
13 {
14 int i;
15 for(i=1;i<maxn;i++)
16 {
17 fa[i]=i;
18 rank[i]=1;
19 }
20 }
21 int findfather(int x)
22 {
23 if(x!=fa[x])
24 fa[x]=findfather(fa[x]);
25 return fa[x];
26 }
27 void mergy(int x,int y)
28 {
29 if(rank[x]>rank[y])
30 {
31 fa[y]=x;
32 rank[x]+=rank[y];
33 ans=max(ans,rank[x]);
34 }
35 else
36 {
37 fa[x]=y;
38 rank[y]+=rank[x];
39 ans=max(ans,rank[y]);
40 }
41 }
42
43 int main()
44 {
45 int n;
46 int i;
47 int x,y;
48 while(scanf("%d",&n)!=EOF)
49 {
50 init();
51 ans=1;
52 for(i=1;i<=n;i++)
53 {
54 scanf("%d%d",&x,&y);
55 x=findfather(x);
56 y=findfather(y);
57 if(x!=y)
58 {
59 mergy(x,y);
60 }
61 }
62 printf("%d\n",ans);
63 }
64 return 0;
65 }
66
?
轉(zhuǎn)載于:https://www.cnblogs.com/M-cag/archive/2012/08/08/2628262.html
總結(jié)
- 上一篇: 同位语从句用法详解
- 下一篇: 八大排序 详解(下)——指向函数的指针