3702: 跑步路线(第六轮04)

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:0

题目描述

牛牛最近开始晨跑了,他把城市的路线抽象成了一张无向图,每个路口视为一个 点,路口之间的路视为一条边。

牛牛估计了跑过每条边的所需时间,为了保守估计所需时间,牛牛认为经过每一 个点也需要t0 的时间。

比如对于路线 1->3->2->4,其中3和2各经过了一遍,需要花费2 ∗ t0 的时间。

在经过很多次糟糕的路线体验之后,牛牛决定请你来帮他设计一条路线,他的要 求是:

1. 需要按顺序经过 k个点,用a1, a2, ⋯ , ak 表示,这些点可能重复。偶尔可能会有 相邻的点相同的情况,这种情况下不需要额外计算t0 的花费。

2. 牛牛希望经过的路线在地图的最小生成树上。

3. 在满足以上两条的需求下,使总距离尽可能短。

牛牛起点在位置a1,牛牛想知道这样的路线中,最短的路线的距离是多少 。

输入

第一行输入两个整数n, m,表示路口的数目和边的个数。

随后m行,每行输出两个整数u, v, w,表示有一条边连接u和v,需要花费的时间是w。

随后一行两个整数k, t0, 分别表示需要经过的k个点和经过每一个点的时间t0 。 随后一行k个数字,表示牛牛需要按顺序经过的k个点。

输出

一行输出一个整数,表示你设计的路线中,牛牛需要花费的时间。

样例输入 复制

5 7
1 2 6
2 3 7
3 4 8
4 5 25
5 1 20
2 5 17
2 4 12
6 100
1 2 3 4 5 1

样例输出 复制

776

提示



【样例 1 输入】

5 7

1 2 6

2 3 7

3 4 8

4 5 25

5 1 20

2 5 17

2 4 12

6 100

1 2 3 4 5 1

【样例 1 输出】

776

【样例 1 说明】


先计算边的总花费时间: 1->2 = 6

2->3 = 7

3->4 = 8

4->5 = 7+8+17 = 32

5->1 = 17+6 = 23

边的花费共计为 76 。

再计算路口的总花费时间,路线是:

1->2->3->4->3->2->5->2->1, 共花费 7*100  的时间。

共计花费 776。

【样例  2 输入】

5 7

1 2 6

2 3 7

3 4 8

4 5 25

5 1 20

2 5 17

2 4 12

9 100

1 1 2 2 3 4 5 1 1

【样例 2 输出】

776

【样例 2 说明】

样例 2 用于解释题目出现的相邻点相同情况,应当忽略之后出现的相同点,图与 样例 1 一致。



于 30%  的数据有  n ≤ 1000,  k, m ≤ 2000。



对于 60%  的数据有  n, m, k  ≤ 100000。

至少有 50%  的数据是随机构造的。

对于总量 40%  的数据  t0  = 0 。

   100%   的 数 据     1  ≤ n, m  ≤  2 ⋅ 105,  1 ≤ k ≤ 106, 1 ≤ t0, w ≤ 109,  1 ≤u, v ≤ n。

数据保证不会有两条距离相同的边,且保证图连通。

CD 的大数据下载链接:

链接: https://pan.baidu.com/s/1zupTECKeGEpNM-9tQ4TzlQ 提取码: NOIP


来源/分类