AT_abc307_f [ABC307F] Virus 2
题目描述
有 $N$ 个房间,编号为 $1, 2, \ldots, N$,每个房间里住着一人。此外,有 $M$ 条通道连接着一些不同的两个房间。第 $i$ 条通道连接房间 $U_i$ 和房间 $V_i$,长度为 $W_i$。
某一天(记为第 $0$ 天夜晚),住在房间 $A_1, A_2, \ldots, A_K$ 的 $K$ 个人被新感染了病毒。接下来的 $D$ 天里,第 $i$ 天($1 \leq i \leq D$)病毒的传播方式如下:
> 在第 $(i-1)$ 天夜晚已经感染的人,在第 $i$ 天夜晚依然保持感染状态。
> 对于其他人,如果他们住的房间与第 $(i-1)$ 天夜晚已感染者所住的任意一个房间之间的距离不超过 $X_i$,则在第 $i$ 天夜晚新感染。这里,房间 $P$ 和房间 $Q$ 之间的距离定义为仅通过通道从 $P$ 到 $Q$ 时所经过通道长度的最小总和。如果无法仅通过通道从 $P$ 到 $Q$ 移动,则距离视为 $10^{100}$。
请对于每个 $i$($1 \leq i \leq N$),输出住在房间 $i$ 的人是在第几天夜晚新感染的。如果到第 $D$ 天夜晚仍未感染,则输出 $-1$。
输入格式
输入按以下格式从标准输入给出。
> $N$ $M$
> $U_1$ $V_1$ $W_1$
> $U_2$ $V_2$ $W_2$
> $\vdots$
> $U_M$ $V_M$ $W_M$
> $K$
> $A_1$ $A_2$ $\ldots$ $A_K$
> $D$
> $X_1$ $X_2$ $\ldots$ $X_D$
输出格式
输出 $N$ 行。
第 $i$ 行($1 \leq i \leq N$)输出住在房间 $i$ 的人是在第几天夜晚新感染的。
说明/提示
### 约束条件
- $1 \leq N \leq 3 \times 10^5$
- $0 \leq M \leq 3 \times 10^5$
- $1 \leq U_i < V_i \leq N$
- 所有 $(U_i, V_i)$ 均不同
- $1 \leq W_i \leq 10^9$
- $1 \leq K \leq N$
- $1 \leq A_1 < A_2 < \cdots < A_K \leq N$
- $1 \leq D \leq 3 \times 10^5$
- $1 \leq X_i \leq 10^9$
- 所有输入均为整数
### 样例解释 1
病毒的传播过程如下:
- 第 $0$ 天夜晚,住在房间 $1$ 的人感染。
- 房间 $1$ 到房间 $2,3,4$ 的距离分别为 $2,3,5$。由于 $X_1=3$,所以第 $1$ 天夜晚,住在房间 $2,3$ 的人新感染。
- 房间 $3$ 到房间 $4$ 的距离为 $2$。由于 $X_2=3$,所以第 $2$ 天夜晚,住在房间 $4$ 的人也感染。
因此,住在房间 $1,2,3,4$ 的人分别在第 $0,1,1,2$ 天新感染,按顺序输出 $0,1,1,2$。
### 样例解释 3
请注意,并非所有两个房间之间都一定可以仅通过通道互相到达。
由 ChatGPT 4.1 翻译