#S8U15P02. 多目标距离汇总

多目标距离汇总

多目标距离汇总

难度:T2

【知识点:堆优化Dijkstra】

前置知识:本单元此前讲解的状态、边界与实现。

题目描述

给出有向带权图和源点 ss,求若干指定目标点的最短距离之和。每个目标独立从 ss 出发,重复出现的目标按出现次数计入。

输入格式

其中 nn 为顶点数,顶点编号为 11 到 nn;mm 为随后给出的带权边条数。每条带权边独占一行,依次为 u,v,wu,v,w,表示从 uu 到 vv 的边及权值 ww;无向边可双向通行,有向边只能从 uu 到 vv 通行。

输入nn、mm、ss,接着mm条有向非负边,随后qq与qq个目标点。重复目标按出现次数分别计入。

输出格式

任一目标不可达输出-11,否则输出所有目标的最短距离之和。

数据范围

1≤n,q≤1000001\le n,q\le 100000,0≤m≤2000000\le m\le 200000,0≤w≤1080\le w\le 10^8,点编号在11..nn。

样例输入

1 0 1
1
1

样例输出

0

样例输入 2

4 3 1
1 2 2
2 3 2
1 3 5
3
2 3 2

样例输出 2

8

样例说明 2

三个目标对应距离为 2,4,22,4,2,重复出现的目标 22 要再次计入。