并查集:
1 int find(int a)
2 {
3 int r=a;
4 while(f[r]!=r)
5 r=f[r];
6 int i=a;
7 int j;
8 while(i!=r)
9 {
10 j=f[i];
11 f[i]=r;
12 i=j;
13 }
14 return r;
15 }
16 int merge(int a,int b)
17 {
18 int A,B;
19 A=find(a);
20 B=find(b);
21 if(A!=B)
22 {
23 f[B]=A;
24 }
25 }