#aBC307F. [ABC307F] Virus 2

[ABC307F] Virus 2

AT_abc307_f [ABC307F] Virus 2

题目描述

NN 个房间,编号为 1,2,,N1, 2, \ldots, N,每个房间里住着一人。此外,有 MM 条通道连接着一些不同的两个房间。第 ii 条通道连接房间 UiU_i 和房间 ViV_i,长度为 WiW_i

某一天(记为第 00 天夜晚),住在房间 A1,A2,,AKA_1, A_2, \ldots, A_KKK 个人被新感染了病毒。接下来的 DD 天里,第 ii 天(1iD1 \leq i \leq D)病毒的传播方式如下:

在第 (i1)(i-1) 天夜晚已经感染的人,在第 ii 天夜晚依然保持感染状态。
对于其他人,如果他们住的房间与第 (i1)(i-1) 天夜晚已感染者所住的任意一个房间之间的距离不超过 XiX_i,则在第 ii 天夜晚新感染。这里,房间 PP 和房间 QQ 之间的距离定义为仅通过通道从 PPQQ 时所经过通道长度的最小总和。如果无法仅通过通道从 PPQQ 移动,则距离视为 1010010^{100}

请对于每个 ii1iN1 \leq i \leq N),输出住在房间 ii 的人是在第几天夜晚新感染的。如果到第 DD 天夜晚仍未感染,则输出 1-1

输入格式

输入按以下格式从标准输入给出。

NN MM
U1U_1 V1V_1 W1W_1
U2U_2 V2V_2 W2W_2
\vdots
UMU_M VMV_M WMW_M
KK
A1A_1 A2A_2 \ldots AKA_K
DD
X1X_1 X2X_2 \ldots XDX_D

输出格式

输出 NN 行。
ii 行(1iN1 \leq i \leq N)输出住在房间 ii 的人是在第几天夜晚新感染的。

输入输出样例 #1

输入 #1

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

输出 #1

0
1
1
2

输入输出样例 #2

输入 #2

7 7
1 2 2
2 3 3
3 4 1
4 5 1
5 6 3
3 7 1
4 7 1
2
1 6
2
2 3

输出 #2

0
1
2
-1
2
0
-1

输入输出样例 #3

输入 #3

5 1
1 2 5
2
1 3
3
3 7 5

输出 #3

0
2
0
-1
-1

说明/提示

约束条件

  • 1N3×1051 \leq N \leq 3 \times 10^5
  • 0M3×1050 \leq M \leq 3 \times 10^5
  • 1Ui<ViN1 \leq U_i < V_i \leq N
  • 所有 (Ui,Vi)(U_i, V_i) 均不同
  • 1Wi1091 \leq W_i \leq 10^9
  • 1KN1 \leq K \leq N
  • 1A1<A2<<AKN1 \leq A_1 < A_2 < \cdots < A_K \leq N
  • 1D3×1051 \leq D \leq 3 \times 10^5
  • 1Xi1091 \leq X_i \leq 10^9
  • 所有输入均为整数

样例解释 1

病毒的传播过程如下:

  • 00 天夜晚,住在房间 11 的人感染。
  • 房间 11 到房间 2,3,42,3,4 的距离分别为 2,3,52,3,5。由于 X1=3X_1=3,所以第 11 天夜晚,住在房间 2,32,3 的人新感染。
  • 房间 33 到房间 44 的距离为 22。由于 X2=3X_2=3,所以第 22 天夜晚,住在房间 44 的人也感染。
    因此,住在房间 1,2,3,41,2,3,4 的人分别在第 0,1,1,20,1,1,2 天新感染,按顺序输出 0,1,1,20,1,1,2

样例解释 3

请注意,并非所有两个房间之间都一定可以仅通过通道互相到达。

由 ChatGPT 4.1 翻译