查并集主要用于解决一些父节点与子节点之间的关系,重要的就是查和并
首先,初始化父节点数组,每个节点的父节点都是本身
inline void inti(int n)
{
for (int i = 1; i <= n; i++)
father[i] = i;
}
然后,实现每个节点的父节点查询(板子)
int find(int x)
{
return x == father[x] ? x : (father[x] = find(father[x]));
}
实现两个树 的合并(让节点i的父节点的父节点变成j的父节点,相当于把i所在的树整个插入j所在的树的下面)
inline void pluss(int i, int j)
{
father[find(i)] = find(j);
}
根据题意利用set去重(所谓集)将所有的树的头节点插入set中,用set来储存所有头节点