带权并查集模板
作者:
hayate
,
2024-05-08 20:06:41
,
所有人可见
,
阅读 71
带权并查集一般考的话,板子不固定
思想很重要
核心在这两个数组: dN, pN
int find(int x)
{
if(x != p[x])
{
//核心是这三步
//其他具体题具体分析
//1、找到根结点root
//2、计算父节点到上一个父节点的距离d[p[x]],同时进行路径压缩(路径压缩后,上一父///节点即root)
//3、d[x]初始值是x到p[x]的距离,更新d[x]值,即d[x] = d[x] + d[p[x]]
int root = p[x];
d[x] += d[p[x]];
p[x] = root;
}
return p[x];
}