QOJ.ac

QOJ

実行時間制限: 10 s メモリ制限: 256 MB 満点: 100

#23849. 殭屍島

統計

JOI 君居住的島嶼被殭屍侵略了。JOI 君決定逃往島上被設定為最安全避難場所的避難所。

JOI 君居住的島嶼由編號為城鎮 $1$ 到城鎮 $N$ 的 $N$ 個城鎮組成,城鎮與城鎮之間由道路連接。島上有 $M$ 條道路,每條道路連接 $2$ 個不同的城鎮。JOI 君可以在道路上雙向自由移動,但不能透過道路以外的途徑從一個城鎮前往另一個城鎮。

有若干個城鎮被殭屍控制了,無法造訪。從被殭屍控制的城鎮出發使用不超過 $S$ 條道路即可到達的城鎮稱為危險城鎮。其餘的城鎮稱為非危險城鎮。

JOI 君的家在城鎮 $1$,避難的目的地避難所在城鎮 $N$。城鎮 $1$ 和城鎮 $N$ 沒有被殭屍控制。由於在島上的道路上移動很耗費時間,JOI 君每次移動到另一個城鎮時,都必須在目的地城鎮住宿一晚。JOI 君在非危險城鎮住宿時,會住在住宿費為 $P$ 日圓的廉價旅館;而在危險城鎮住宿時,會住在安保服務優良、住宿費為 $Q$ 日圓的高級旅館。JOI 君希望盡可能使住宿費便宜地移動並避難到城鎮 $N$。在城鎮 $1$ 和城鎮 $N$ 不需要住宿。

求 JOI 君從城鎮 $1$ 移動到城鎮 $N$ 所需的總住宿費的最小值。

輸入格式

輸入由 $2 + K + M$ 行組成。

第 $1$ 行包含 $4$ 個以空格分隔的整數 $N, M, K, S$ ($2 \le N \le 100000$, $1 \le M \le 200000$, $0 \le K \le N - 2$, $0 \le S \le 100000$)。這表示島嶼由 $N$ 個城鎮和 $M$ 條道路組成,$N$ 個城鎮中有 $K$ 個城鎮被殭屍控制,且從被殭屍控制的城鎮出發使用不超過 $S$ 條道路即可到達的城鎮稱為危險城鎮。

第 $2$ 行包含 $2$ 個以空格分隔的整數 $P, Q$ ($1 \le P < Q \le 100000$)。這表示 JOI 君在非危險城鎮住在住宿費為 $P$ 日圓的旅館,在危險城鎮住在住宿費為 $Q$ 日圓的旅館。

接下來的 $K$ 行中的第 $i$ 行 ($1 \le i \le K$) 包含整數 $C_i$ ($2 \le C_i \le N - 1$)。這表示城鎮 $C_i$ 被殭屍控制。$C_1, \dots, C_K$ 互不相同。

接下來的 $M$ 行中的第 $j$ 行 ($1 \le j \le M$) 包含 $2$ 個以空格分隔的整數 $A_j, B_j$ ($1 \le A_j < B_j \le N$)。這表示城鎮 $A_j$ 與城鎮 $B_j$ 之間存在一條道路。相同的 $(A_j, B_j)$ 組合不會出現 $2$ 次或以上。

在給定的輸入資料中,保證可以僅經過未被殭屍控制的城鎮從城鎮 $1$ 移動到城鎮 $N$。

輸出格式

在 $1$ 行中輸出 JOI 君從城鎮 $1$ 移動到城鎮 $N$ 所需的總住宿費的最小值。

請注意,輸出結果不一定在 $32$ 位元有號整數的範圍內。

範例

範例輸入 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

範例說明 1

範例 $1$ 對應下圖。圓圈表示城鎮,線段表示道路。

problem_23849_bac2d8f5a931b2ef74845a3e75798198.png

在這種情況下,城鎮 $3$、城鎮 $4$、城鎮 $6$、城鎮 $8$、城鎮 $12$ 是危險城鎮。

按照如下順序在城鎮間移動,可以使總住宿費最小:

  • 從城鎮 $1$ 前往城鎮 $2$。在城鎮 $2$ 住宿在住宿費為 $1000$ 日圓的廉價旅館。
  • 從城鎮 $2$ 前往城鎮 $5$。在城鎮 $5$ 住宿在住宿費為 $1000$ 日圓的廉價旅館。
  • 從城鎮 $5$ 前往城鎮 $9$。在城鎮 $9$ 住宿在住宿費為 $1000$ 日圓的廉價旅館。
  • 從城鎮 $9$ 前往城鎮 $10$。在城鎮 $10$ 住宿在住宿費為 $1000$ 日圓的廉價旅館。
  • 從城鎮 $10$ 前往城鎮 $11$。在城鎮 $11$ 住宿在住宿費為 $1000$ 日圓的廉價旅館。
  • 從城鎮 $11$ 前往城鎮 $12$。在城鎮 $12$ 住宿在住宿費為 $6000$ 日圓的高級旅館。
  • 從城鎮 $12$ 前往城鎮 $13$。在城鎮 $13$ 不住宿。

當 JOI 君沿此路線移動時,總住宿費為 $11000$ 日圓,因此輸出 $11000$。

範例輸入 2

21 26 2 2
1000 2000
5
16
1 2
1 3
1 10
2 5
3 4
4 6
5 8
6 7
7 9
8 10
9 10
9 11
11 13
12 13
12 15
13 14
13 16
14 17
15 16
15 18
16 17
16 19
17 20
18 19
19 20
19 21

範例輸出 2

15000

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.