并查集模板
作者:
codinRay | 来源:发表于
2017-04-07 23:22 被阅读0次int pre[MAXN];
int Find(int pos) {
if (pre[pos] == pos) // pre是自己,代表为root节点
return pos;
int r = pos;
while (r != pre[r]) // 找到节点pos的root
r = pre[r];
// 路径压缩
int i = pos;
while (i != r) { // 把沿路pos->root沿路的节点的root的pre
//全部设置为root
int t = pre[i];
pre[i] = r;
i = t;
}
return r;
}
void Union(int posX, int posY) { // 把两个节点的root设置为同一个
int rootX = Find(posX), rootY = Find(posY);
if (rootX != rootY)
pre[rootX] = rootY;
}
本文标题:并查集模板
本文链接:https://www.haomeiwen.com/subject/uhvkattx.html
网友评论