Description
题目链接:Luogu 4234
给定一个标号为从 $1$ 到 $n$ 的、有 $m$ 条边的无向图,求边权最大值与最小值的差值最小的生成树。
数据范围:$1\le n\le 5\times 10^4$,$1\le m\le 2\times 10^5$,$1\le w_i\le 10^4$
Solution
肯定要先贪心地把边按照权值从小到大排序,然后依次加入树中。假设当前的边为 $(u,v,w)$,此时有 $2$ 种情况:
- 当 $u$ 和 $v$ 不连通:我们直接将 $(u,v,w)$ 加入树中。
- 当 $u$ 和 $v$ 联通时:如果我们直接加入必然会形成一个环,那么我们现将链 $(u,v)$ 上权值最小的边删除,然后加入 $(u,v,w)$ 这条边。
按照这样的操作得到的答案一定是最优的。注意到我们有动态加边和删边,那么可以用 $\text{LCT}$ 维护。
考虑如何求答案。我们维护一个指针 $p$ 指向树中权值最小的边。每次加入的边一定是树中权值最大的。一旦树联通了就更新答案。
注意:本题没有保证无自环,需要忽略自环!
时间复杂度:$O(m\log m)$
Code
1 |
|