cf773

D. Perishable Roads

题意:

有一个 \(n\) 个点的图,对于每两个点 \((i,j)\) 之间都有一条长度为 \(w_{i,j}\) 的无向边。

给你一个点 \(t\),你需要构造一棵以 \(t\) 为根的生成树,使得 \(\sum_{i=1}^n s(i,t)\) 尽量小。\(s(i,t)\)\(i\sim t\) 的树上路径上的最小权值。

你需要对于每个 \(t\) 都求出答案。

\(n \leq 2000\)

题解:

首先,答案一定形如扫帚形状,而最小值一定位于菊花正上方的一条边。

考虑调整法构造,每次将菊花的一个点拎到最上面,这样总结果增加 \(w(u, v) - \min\)。这样,我们建出一个新图,在这个新图上跑最短路即可。

如何证明扫帚是对的?你将一个挂在链上的东西调整到菊花一定不劣。

posted @ 2025-09-18 20:31  Eliauk_FP  阅读(5)  评论(0)    收藏  举报