题面:https://codeforces.com/problemset/problem/1540/A
大概题意:有一个有向、有负边、无负环的图,再给定node1到各个node的最短距离dis[i],求图中边权的总和最小值
题解:从node[a]到node[b]之间的边入手,val>=dis[b]-dis[a],即若dis[b]<=dis[a],可构造一个非正边;若dis[b]>dis[a],则a到b只能构造正边
我们将所有非负边构造出后,接下来只能构造正边,如何构造尽量少的正边使题设成立?易知只能构造node[1]到dis最大的node的边(此为必须,非负边情况下,其他node没有到该node的边,而该node有到所有node的边)
故我们只需排序后,算出所有node对ans的贡献即可。
附code:
1 |
|