感觉此题可以评蓝。
首先,由 "
n−m−1 种特训方案" 可知,我们最重要添加一些边,使得形成一棵树,这意味着图中不能有环,初始的结构一定是森林。我们可以通过 dfs 判环,如果有环,则无解。
因此,在初始每棵树的内部,两两节点之间的最短距离是唯一的,可通过预处理直接求出。我们需要找出到达其他节点距离之和最小的点,用于连接不同的连通块,这个点就是树的重心。添加新边时,把每个连通块看成一个节点。问题转化为构造一棵新树,使其每条经过次数与权值乘积之和最小。贪心地考虑,我们要让权值最小的边经过次数最多,且最短路径长度之和尽可能少,一定要构造菊花图,让权值最大的连通块作为根节点,其他的作为叶节点。我们把所有边按边权从大到小排序,边权最小的边连接最大连通块,边权次小的边连接次大连通块,以此类推。
贪心的证明如下:
- 设连通块的数量为 k ,大小分别为 siz1,siz2,...,sizk,不妨设 siz1≥siz2≥...≥sizk ;
- 已知某条边 i 与连通块 pi 相连,则该条边对答案贡献 qi≥sizpi(n−sizpi)ai ;
- 令 ci=sizi(n−sizi) ,则 c1≥c2≥...≥ck ;
- 令 Si=i=1∑kcpi ,si=i=1∑kci ,构造 d1,i=aj(Sj−1<i≤Sj),d2,i=aj(sj−1<i≤sj) ,则 ∑d1,i=i=1∑kcpiai , ∑d2,i=i=1∑kciai . 由 sj≤Sj 可知 d1,i≥d2,i ,于是 ∑d1,i≥∑d2,i ,即 i=1∑kcpiai≥i=1∑kciai;
- 总答案 i=1∑kqi≥i=1∑kcpiai≥i=1∑kciai
- 依照上述方法构造菊花图,则 i=1∑kqi=i=1∑kciai ,得证。