并查集:find函数
int find(int x)
{
if (x != parent[x])
{
parent[x] = find(parent[x]);
}
return parent[x];
}
带权并查集:find函数
int find(int x)
{
if (x != parent[x])
{
int t = parent[x]; //记录当前节点的父节点
parent[x] = find(parent[x]);
value[x] += value[t]; //
}
return parent[x];
}
带权并查集:合并函数:
int px = find(x);
int py = find(y);
if (px != py)
{
parent[px] = py;
value[px] = -value[x] + value[y] + s;
}

posted on
浙公网安备 33010602011771号