#abc307f. [abc307_f]Virus 2

[abc307_f]Virus 2

问题描述

NN 个编号为1122ldots\\ldotsNN的房间,每个房间里住着一个人,还有 MM 个连接两个不同房间的走廊。第 ii 条走廊连接着房间 UiU_iViV_i,长度为 WiW_i

某一天(我们将这一天称为第 00 天),住在房间 A1,A2,ldots,AKA_1, A_2, \\ldots, A_KKK 个人被病毒感染了(新感染)。此外,在接下来的 DD 天中的第 ii(1leqileqD)(1\\leq i\\leq D),感染情况如下扩散。

在第 (i1)(i-1) 天夜晚感染的人在第 ii 天夜晚仍然感染。
对于那些没有感染的人,如果他们住在离第 (i1)(i-1) 天夜晚感染的房间至少距离为 XiX_i 的房间内,则他们在第 ii 天夜晚感染。这里,房间 PPQQ 之间的距离定义为只使用走廊从房间 PP 移动到房间 QQ 的长度之和的最小可能值。如果只使用走廊无法从房间 PP 移动到房间 QQ,则距离设置为 1010010^{100}

对于每个 ii (1leqileqN1\\leq i\\leq N),打印住在房间 ii 中的人感染的天数。如果他们在第 DD 天夜晚没有感染,则打印 \-1\-1

约束条件

  • 1leqNleq3times1051 \\leq N\\leq 3\\times 10^5
  • 0leqMleq3times1050 \\leq M\\leq 3\\times 10^5
  • 1leqUi<VileqN1 \\leq U_i < V_i\\leq N
  • 所有 (Ui,Vi)(U_i,V_i) 都是不同的。
  • 1leqWileq1091\\leq W_i\\leq 10^9
  • 1leqKleqN1 \\leq K\\leq N
  • 1leqA1<A2<cdots<AKleqN1\\leq A_1<A_2<\\cdots<A_K\\leq N
  • 1leqDleq3times1051 \\leq D\\leq 3\\times 10^5
  • 1leqXileq1091\\leq X_i\\leq 10^9
  • 所有输入值均为整数。

输入

输入以以下格式从标准输入给出:

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

输出

打印 NN 行。
ii(1leqileqN)(1\\leq i\\leq N) 应该包含住在房间 ii 中的人感染的天数。


示例输入 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

感染情况如下:

  • 00 天晚上,住在房间 11 中的人被感染。
  • 房间 11 和房间 2,3,42,3,4 之间的距离分别为 2,3,52,3,5。因此,由于 X1=3X_1=3,住在房间 2233 的人在第 11 天晚上被新感染。
  • 房间 33 和房间 44 之间的距离为 22。因此,由于 X2=3X_2=3,住在房间 44 的人也在第 22 天晚上被感染。

因此,住在房间 1,2,3,41,2,3,4 的人在第 0,1,1,20,1,1,2 天分别被新感染,所以按照这个顺序分别打印 0,1,1,20,1,1,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

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

示例输出 3

0
2
0
-1
-1

注意,并不总是可以只使用走廊在任意两个房间之间移动。