标签:
两人找上级直到找到根节点看看是否是同派 int pre[1000];//祖先数组 int find(int x)//查找根节点 { int r=x; while(pre[r]!=r)//返回根节点r r=pre[r]; int i=x,j; while(i!=r)//路径压缩 { j=pre[i];//在改变上级之前用临时变量j记录下他的值 pre[i]=r;//把上级改为根节点 i=j; } return r; } void join(int x,int y)//判断x,y是否连通.如果已经连通,就不用管了;如果不连通,就把它们所在的连通分支合并起 { int fx=find(x),fy=find(y); if(fx!=fy) pre[fx]=fy; }
标签:
原文地址:http://www.cnblogs.com/d-e-v-i-l/p/4782872.html