思路是先忽略打井,用 prim 构建最小生成树,求得最小生成树的边权和 tree_ans。
tree_ans
然后枚举生成树上一点 rt 作为根,在根上打一个井,那么对于其他的节点 v,如果它选择打井,那么它就可以删去和父亲 u 之间的连边,这样对答案的贡献是 wel[v]-dist[u][v]。贪心选择所有负数的贡献,即可求得以 rt 为根的答案。
wel[v]-dist[u][v]
对每个 rt 的答案求最小值即为最终答案。