#joi2016yoe. [joi2016yo_e]ゾンビ島 (Zombie Island)

[joi2016yo_e]ゾンビ島 (Zombie Island)

问题

JOI 君所居住的岛屿已经被僵尸入侵。JOI 君决定逃到作为岛上最安全避难所设定的庇护所。

JOI 君所居住的岛屿由 NN 个城镇(编号从 11NN)组成,并且城镇与城镇之间通过道路连接。岛上共有 MM 条道路,每条道路连接两个不同的城镇。JOI 君可以自由地在道路上双向行驶,但无法通过道路以外的路径从一个城镇到另一个城镇。

一些城镇已经被僵尸占领,无法访问。从被僵尸占领的城镇出发,通过 SS 条以下的道路可以到达的城镇被称为危险城镇,其他城镇被称为安全城镇。

JOI 君的家在城镇 11,庇护所在城镇 NN。城镇 11 和城镇 NN 都没有被僵尸占领。由于岛上的道路行驶耗时较长,JOI 君每次移动到另一个城镇都需要在目的地城镇过夜。如果 JOI 君选择在安全城镇过夜,他会选择价格较低的旅馆,价格为 PP 日元。如果选择在危险城镇过夜,他会选择安全服务较好的高级旅馆,价格为 QQ 日元。JOI 君希望尽可能地减少过夜费用,并成功逃到城镇 NN。不需要在城镇 11 或城镇 NN 过夜。

请你求出 JOI 君从城镇 11 移动到城镇 NN 所需的最小过夜费用总和。


输入

输入由 2+K+M2 + K + M 行组成。

11 行包含 44 个整数 N,M,K,SN, M, K, S,以空格分隔 (2N1000002 \leqq N \leqq 100\,0001M2000001 \leqq M \leqq 200\,0000KN20 \leqq K \leqq N - 20S1000000 \leqq S \leqq 100\,000)。这些数表示岛屿由 NN 个城镇和 MM 条道路组成,其中 KK 个城镇被僵尸占领,通过 SS 条以下的道路可达的城镇被称为危险城镇。

22 行包含 22 个整数 P,QP, Q,以空格分隔 (1P<Q1000001 \leqq P < Q \leqq 100\,000)。这些数表示 JOI 君在安全城镇过夜时的费用为 PP 日元,在危险城镇过夜时的费用为 QQ 日元。

接下来的 KK 行中,第 ii 行 (1iK1 \leqq i \leqq K) 包含一个整数 CiC_i (2CiN12 \leqq C_i \leqq N - 1),表示城镇 CiC_i 被僵尸占领。保证 C1,,CKC_1, \ldots, C_K 两两不相同。

接下来的 MM 行中,第 jj 行 (1jM1 \leqq j \leqq M) 包含 22 个整数 Aj,BjA_j, B_j,以空格分隔 (1Aj<BjN1 \leqq A_j < B_j \leqq N),表示城镇 AjA_j 和城镇 BjB_j 之间存在一条道路。保证没有重复的 (Aj,Bj)(A_j, B_j) 对。

保证在给定的输入数据中,从城镇 11 到城镇 NN 的路径只通过安全城镇。

输出

输出 JOI 君从城镇 11 移动到城镇 NN 所需的最小过夜费用总和,以一行输出。

请注意,输出结果可能超过 3232 位有符号整数的范围。


输入样例 1

13 21 1 1
1000 6000
7
1 2
3 7
2 4
5 8
8 9
2 5
3 4
4 7
9 10
10 11
5 9
7 12
3 6
4 5
1 3
11 12
6 7
8 11
6 13
7 8
12 13

输出样例 1

11000

输入样例 11 对应如下图所示。圆表示城镇,线表示道路。

2016-yo-t5-fig01.png

在这个例子中,城镇 33,城镇 44,城镇 66,城镇 88 和城镇 1212 是危险城镇。

按照以下顺序移动城镇可以使过夜费用总和最小:

  • 从城镇 11 移动到城镇 22。在城镇 22 过夜,费用为 10001\,000 日元。
  • 从城镇 22 移动到城镇 55。在城镇 55 过夜,费用为 10001\,000 日元。
  • 从城镇 55 移动到城镇 99。在城镇 99 过夜,费用为 10001\,000 日元。
  • 从城镇 99 移动到城镇 1010。在城镇 1010 过夜,费用为 10001\,000 日元。
  • 从城镇 1010 移动到城镇 1111。在城镇