并查集介绍
并查集常用来解决集合问题,可以高效查询两个元素是否属于同一个集合
力扣1
力扣2
初始化,每个元素根节点指向自己
int fa[MAXN];
inline void init(int n)
{
for (int i = 1; i <= n; ++i)
fa[i] = i;
}
查找根节点,根节点相同属于同一个集合
int find(int x)
{
if(fa[x] == x)
return x;
else
fa[x] = find(fa[x]);
return fa[x];
}
两个集合合并
inline void merge(int i, int j)
{
fa[find(i)] = find(j);
}