关于路径压缩

P3367 【模板】并查集

cainiaonagi @ 2021-03-07 01:11:20

如果每个集合很大的话,可不可以通过 x=f[x]=f[f[x]]=f[f[f[x]]]//我写的循环

来进一步地压缩


by pocafup @ 2021-03-07 04:44:31

问一下这个为啥是对的啊

不应该是 x=f[x] = f[f[x]] = Find(f[f[f[x]]) 吗(


by LAWArthur @ 2021-03-07 08:05:48

@cainiaonagi 道理上是对的 但从来没见过有人这么写

不知道你想实现怎么样的优化


by BlankAo @ 2021-03-07 08:25:23

不都是把所有点直接连向最老的祖宗吗


by Imy_bisLy @ 2021-03-07 08:40:11

递归就挺好的……,不放心的话写个按置合并,又浪费不了几分钟


by littlefrog @ 2021-03-07 08:55:02

是啊,但是你想实现更强的优化你直接按秩合并,比这还要快,另外你在做什么题啊,把并查集卡到这份上

并查集加了一般路径压缩(fa[x] = get(fa[x])) 就接近 \mathcal{O}(n)


|