题目
给你$N$个点, 有点权$a[i]$, 有$M$条边, 每条边有边权$c[i]$, 对于每个$i$ ,$j$ 为任意点,求$min(dist(i,j)*2+a[j])$
$N,M \leq 2*10^5$
分析
题目相当于求每个点到图中的最短路,既多源最短路.可以利用堆优化的dijkstra求得.因为堆顶每次都为到改点的距离最小值,我们每次取出堆顶,然后向相邻点扩展即可.
代码
1 |
|
给你$N$个点, 有点权$a[i]$, 有$M$条边, 每条边有边权$c[i]$, 对于每个$i$ ,$j$ 为任意点,求$min(dist(i,j)*2+a[j])$
$N,M \leq 2*10^5$
题目相当于求每个点到图中的最短路,既多源最短路.可以利用堆优化的dijkstra求得.因为堆顶每次都为到改点的距离最小值,我们每次取出堆顶,然后向相邻点扩展即可.
1 |
|
Title:CF938D 多源最短路
Author:CaCO3
Created:2018-02-27, 21:34:49
Updated:2018-02-27, 21:48:59
Full URL:https://sunyinkai.github.io/2018/02/27/CF938D_多源最短路/
License: "CC BY-NC-SA 4.0" Keep Link & Author if Distribute.