并查集find函数3种写法

来源:互联网 发布:营销之道软件 编辑:程序博客网 时间:2024/05/16 15:00
//这个是递归,查找的同时把所经过的点都进行了路径压缩
int find(int x){if(x!=pre[x])pre[x]=find(pre[x]);return pre[x];}
//这个是查找哪个点把哪个点路径压缩了,而其他点则没有int find(int x){int a=x;while(x!=pre[x])x=pre[x];pre[a]=x;return x;}
//这个是和那个递归的意思一样,但是就是先查找到根节点,再把这一路的点进行路径压缩int find(int x){int a=x,b;while(x!=pre[x])//这里就是先找x=pre[x];while(a!=pre[a])//这里条件还可以是a!=x,刚提交了一下都过了 {//再把这一路的点进行压缩b=pre[a];pre[a]=x;a=b;}return x;}
0 0
原创粉丝点击