int fr(int x)
{
int t1 = x, t2;//x
while (par[x] != 0)
{
x = par[x];
}
while (t1 != x) //x已经是par根结点
{
t2 = par[t1];//暂时保存par[t1]
par[t1] = x;//路径上的结点的par值都改为根节点,来减少递归
t1 = t2;
}
return x;
}
void u(int x, int y)
{
int xr = fr(x);
int yr = fr(y);
if (xr != yr)
par[xr] = yr;
}
【代码】并查集模板
于 2024-03-24 16:09:59 首次发布