并查集,一种树型的数据结构,用于处理一些不相交集合的合并及查询问题(即所谓的并、查)。比如说,我们可以用并查集来判断一个森林中有几棵树、某个节点是否属于某棵树等。
善于处理不相交的分团问题。
并查集一般只用一个数组fa[]来存储,意为存储每个节点的父结点,有以下操作:
初始化:
for(int i = 0; i <= n; i++)
{
fa[i] = i;
}
//并查集常用操作 merge 与find
int find(int x) {
return(fa[x] == x ? x : fa[x] = find(fa[x]));
}
void merge(int x, int y) {
fa[find(x)] = find(y);
}