刚刚看到有人在发,来问一下路径压缩的并查集为什么是 O(mlogn)O(m \log n)O(mlogn) 的。
个人感性理解是:每次 merge 操作会产生一对父子关系,find 造成时间的是 merge 中产生的父子关系,我觉得时间应该是 O(n+m)O(n+m)O(n+m) 的。
oi-wiki 的证明和构造看不太懂 /yun,有没有人能告诉我一个感性点的方式,或者告诉我怎么卡路径压缩,或者告诉我我那个理解为什么是错的,或者给我一个可以卡到 O(mlogn)O(m \log n)O(mlogn) 的 hack。
感谢。