Problem
【PA2012】Tax
Description
给出一个个点条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点到点的最小代价。
起点的代价是离开起点的边的边权,终点的代价是进入终点的边的边权。
Input
第一行两个整数,表示图的点数和边数。
接下来行,每行三个整数,表示间存在一条边权为的无向边。
Output
Sample Input
1 | 4 5 |
Sample Output
1 | 12 |
HINT
,
标签:最短路
Solution
经典拆边建模。
将每条有向边作为一个点,若存在边,,则连边。跑最短路即可。但这样图太稠密,会。
考虑像网络流一样差分建图。对于点,记录其入边和出边,并将按边权排序。对于每对互为反向边的边,从入边向出边连边权为原边权的边。对于排好序的,按顺序从小到大,每条边向其下一条边连一条长为原边权差的点。这样相当于每个点的出边集连成了一条链,选择在链的哪个部分离开即可确定在原图上走哪条出边。
保险起见用。
Code
1 |
|