并查集¶
向量偏移并查集(用带权并查集解决扩展域问题)¶
按秩合并¶
用栈记录 fx fy addsiz,可以实现撤销多步。
删边¶
开虚拟节点(假爹)
所有真实节点都连接到假爹上 通过假爹作为标志祖先建立连接
由于join()的实现是:
fa[find(i)] = find(j); //将i合并到j
而这里 j 的祖先是虚拟的
我们永远不删除虚拟的祖先 只更改真实节点的祖先
所以即使真实节点不再属于 j 祖先集合
也不影响 i 属于这个集合
删除 只需要新建一个新虚拟节点或利用空虚拟节点作为其祖先即可
并查集——简单易懂(内附并查集删除操作)_花心的boy的博客-CSDN博客_并查集删除元素
不进行路径压缩,我们可以实现\(O(1)\)删边。