概念
并查集:每个集合用一棵树来表示,树根的编号就是整个集合的编号。
朴素并查集
一般有一个变量,为p[N]
有三个基本操作,为初始化,查找根结点find(u),合并集合
有三个共同操作,分别为查找父结点,查询关系,判断根结点
第零步-名词解释
p[N]
p[]存储每个结点的父结点,p[x]表示x的父结点点或根结点
第一步-三个基本操作
初始化
// 初始化,假定结点编号是1~n
for (int i = 1; i <= n; i ++ ) p[i] = i; // 每个结点的根结点(或父节点)都是自己
查找根结点find(u)
//返回x的根结点,进行了路径压缩,找不到父结点了
int find(int x)
{
if (p[x] != x) p[x] = find(p[x]);
return p[x];
}
合并集合
// 合并 a 和 b 所在的两个集合:
p[find