并查集模板
图解并查集
并查集的作用就是把一个数据集分成若干个子集,每个子集内部数据可以互联互通,而子集之间则不具有连通性。
并查集的底层结构类似于堆,也是用数组描述一种树结构,但不同的是,堆是一棵独立的二叉树,并查集的树是多叉树,而且可能不止一棵树(也就是森林)。
在并查集中,我们把相互独立的数据集称为连通分量,连通分量在逻辑上可以形象地描述为一棵树,每棵树都有一个根节点,其他的元素都会直接或间接指向根节点。
class UnionFind {
private:
int count;
vector parent;
public:
UnionFind(int n) : parent(n) {
count=n;
for (int i=0;i