最小树形图
模板题:link
按照 dhx 的说法,证明非常复杂,因此直接给出做法。
首先比较自然的,每个点连最小的出边,会构成一个基环森林,那么类似 Boruvka 算法,将环上的点合并,当然出边也要合并,并且因为这个点如果换了出边的话原来的边就不需要了,因此边权应变为 \(w-min_u\)。然后再次对每个点找最小的出边,直到没有环了就结束。
但是不同于 Boruvka 算法的是,因为是有向图所以并没有复杂度或者说合并轮数的保证,需要用 DS 来维护,容易想到维护两个可并堆来实现可并 set,时间复杂度 \(O(n\log n)\)。

浙公网安备 33010602011771号