Bot Friends 2 / Opening Portals

问题:一个 \(n\) 个点,\(m\) 条边的无向图 \(G\) 上有 \(k\) 个关键点 \(v_1,v_2,\dots,v_k\)。用所有关键点建一张新图 \(G'\),对于两个关键点 \(v_i,v_j\),在它们之间连一条权值为 \(dis_G(v_i,v_j)\) 的边。求 \(G'\) 的最小生成树。

对于 \(G\) 中每一个点 \(u\),设 \(dis_u\) 为离 \(u\) 最近的关键点到它的距离,\(p_u\) 为这个关键点的编号。如果有相等的情况取编号较小的。

结论:对于 \(G\) 中的每一条边 \(e=(u,v)\),在 \(p_u,p_v\) 之间连一条权值为 \(dis_u+dis_v+w_e\) 的边,在得到的图上跑 MST 就是答案。

证明(看起来是对的):

考虑 Kruskal 的过程。我们想要说明的是,若一条路径 \(x\leadsto y\) 在过程中被选择了,那一定存在一个转折点满足路径的前半部分都有 \(p_i=x\),后半部分都有 \(p_i=y\)。利用最短路的性质,路径上的 \(p\) 不可能出现形如 \(xyxy\) 的子序列,因此我们只需要说明第一个非 \(x\) 的是 \(y\),最后一个非 \(y\) 的是 \(x\)。由对称性,证明一个就足够了,下面以前者为例。

考虑路径上的第一个 \(p_i\neq x\) 的点 \(i\),设 \(p_i=z\neq y\),分类讨论:(注意我们需要在所有路径之间合理地确定一个严格的偏序,比如权值和相同时按照起点、终点的编号二元组排序)

  • 若此时 \(z\)\(y\) 不在同一集合内,则一定有 \(z\leadsto y\)\(x\leadsto y\) 更优;

  • 否则一定有 \(x\leadsto z\)\(x\leadsto y\) 更优。

因此无论如何 \(x\leadsto y\) 也不是最优的,矛盾。

posted @ 2025-11-03 16:58  user_10086  阅读(10)  评论(0)    收藏  举报