并查集 路径压缩
2017-03-14 10:48
169 查看
下面是采用路径压缩的方法查找元素:
上面是一采用递归的方式压缩路径, 但是,递归压缩路径可能会造成溢出栈,我曾经因为这个RE了n次,下面我们说一下非递归方式进行的路径压缩:
int find(int x) //查找x元素所在的集合,回溯时压缩路径 { if (x != parent[x]) { parent[x] = find(parent[x]); //回溯时的压缩路径 } //从x结点搜索到祖先结点所经过的结点都指向该祖先结点 return parent[x]; }
上面是一采用递归的方式压缩路径, 但是,递归压缩路径可能会造成溢出栈,我曾经因为这个RE了n次,下面我们说一下非递归方式进行的路径压缩:
int find(int x) { int k, j, r; r = x; while(r != parent[r]) //查找跟节点 r = parent[r]; //找到跟节点,用r记录下 k = x; while(k != r) //非递归路径压缩操作 { j = parent[k]; //用j暂存parent[k]的父节点 parent[k] = r; //parent[x]指向跟节点 k = j; //k移到父节点 } return r; //返回根节点的值 }
相关文章推荐
- 并查集——路径压缩
- [HDOJ2818]Building Block(带权并查集,路径压缩)
- 杭电3635-Dragon Balls-并查集之路径压缩
- 【模版】并查集 及路径压缩
- ZOJ-3261(并查集续路径压缩,灵活应用)
- POJ 1988 Cube Stacking(路径压缩并查集)
- 并查集 带压缩路径的版本
- poj1988 并查集+路径压缩
- uvalive 3027 Corporative Network 并查集+路径压缩
- 并查集(递推法)+路径压缩(转)
- SDUT 3386 小雷的冰茶几 并查集 压缩路径
- 并查集压缩路径
- Hduoj1272【并查集+路径压缩】
- 并查集 ---压缩路径
- 并查集及并查集的路径压缩
- 【模板】并查集 两种路径压缩写法
- 并查集的路径压缩
- HDU 4496D-City2013通化邀请赛D题(并查集 需要压缩路径)
- 并查集算法和路径压缩
- uva1493 - Draw a Mess 并查集路径压缩