您的位置:首页 > 其它

并查集路径压缩

2015-08-05 16:33 232 查看
递归方法路径压缩:

int find(int x)

{

if(x!=father[x])

father[x]=find(father[x]);

return father[x];

}

上面代码可能会RE;建议用下面的代码:

int findset(int x)

{

int r = x;

while(father[r]!=r) ///查找跟节点

r = father[r]; ///找到根节点,用r记录

int i = x,j;

while(i != r) ///非递归路径压缩

{

j = father[i]; ///用j暂时存father[i]的父节点

father[i] = r; ///father[i]指向跟节点

i = j; ///i移到父节点

}

return r; ///返回根节点的值

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: