并查集
1 void init(int n) 2 { 3 for(int i=1;i<=n;i++) 4 { 5 pre[i]=i; 6 } 7 } 8 int find_pre(int x) 9 { 10 if(pre[x]==x)return x; 11 return pre[x]=find_pre(pre[x]); 12 } 13 void Union(int i,int j) 14 { 15 i=find_pre(i); 16 j=find_pre(j); 17 if(i==j)return; 18 else 19 { 20 pre[i]=j; 21 } 22 } 23 int is(int i,int j) 24 { 25 return find_pre(i)==find_pre(j); 26 }