并查集用于判断两元素是否属于同一集合,合并两个不同集合,可用于判断图的连通性
int father[maxn]; //存储每个节点的父节点
int getfather(int a) //找到元素在并查集中的根节点
{
if(father[a]==a) return a; //如果该元素是并查集中的根节点,那么规定它的父节点为节点本身。(无论它是否是空树)
father[a]=getfather(father[a]); //路径压缩,使树不退化成一条链,扁平化每棵树
return father[a];
}
void merge(int x, int y) //合并两个元素
{
int fx=getfather(x), fy=getfather(y);
if(fx!=fy) father[fx]=fy;
}

本文详细介绍了并查集算法的基本概念及其应用。包括如何通过并查集判断两元素是否属于同一集合,如何合并两个不同集合,以及如何利用并查集判断图的连通性等。并提供了具体的实现代码。
2678

被折叠的 条评论
为什么被折叠?



