P14376 [JOISC 2018] 野猪 / Wild Boar
题目描述
JOI-kun 是一只生活在 IOI 森林中的野猪,森林中有 $N$ 个补给站和 $M$ 条道路。补给站编号为 $1$ 至 $N$。第 $i$ 条道路($1 \le i \le M$)双向连接补给站 $A_i$ 和 $B_i$,JOI-kun 沿该道路往返任一方向均需耗时 $C_i$ 小时。从任意补给站出发,均可经由一条或多条道路抵达其他任意补给站。
JOI-kun 不擅长掉头。他不能在道路中途掉头返回刚离开的补给站。此外,当他通过某条道路抵达一个补给站后,不能沿原路立即返回上一个补给站。
每天,JOI-kun 根据 **补给计划** 在补给站供应食物。每日的补给计划由一个长度为 $L$ 的补给站序列 $X_1, X_2, \ldots, X_L$ 组成。他从补给站 $X_1$ 开始供应,按顺序访问各补给站,最终在补给站 $X_L$ 结束供应。途中允许经过其他补给站。他可能多次在同一个补给站供应食物,但需满足对每个 $j$($1 \le j \le L - 1$),有 $X_j \ne X_{j+1}$。请注意,可能存在他无法执行的补给计划。
初始时,JOI-kun 制定初始补给计划 $X_1, X_2, \ldots, X_L$。在第 $k$ 天早晨($1 \le k \le T$),他会将计划中第 $P_k$ 个值修改为 $Q_k$(即 $X_{P_k}$ 变为 $Q_k$),然后按新计划供应食物。修改后,对每个 $j$($1 \le j \le L - 1$),仍满足 $X_j \ne X_{j+1}$。
对于 $T$ 天内每一天的补给计划,JOI-kun 希望判断他是否能够执行该计划;若可以执行,则求出按该计划供应食物所需的最短时间。
**任务**
给定 IOI 森林的数据和 JOI-kun 的补给计划,对于 $T$ 天内每一天的补给计划,编写一个程序,判断他是否能够执行该计划;若可以执行,则求出按该计划供应食物所需的最短时间。
输入格式
从标准输入读取以下数据:
- 输入第一行包含四个以空格分隔的整数 $N$、$M$、$T$ 和 $L$。这表示 IOI 森林中有 $N$ 个补给站和 $M$ 条道路,JOI-kun 考虑 $T$ 天的补给计划,且补给计划由长度为 $L$ 的序列构成。
- 接下来的 $M$ 行中,第 $i$ 行($1 \le i \le M$)包含三个以空格分隔的整数 $A_i$、$B_i$ 和 $C_i$。这表示第 $i$ 条道路双向连接补给站 $A_i$ 和 $B_i$,JOI-kun 沿该道路往返任一方向均需耗时 $C_i$ 小时。
- 接下来的 $L$ 行中,第 $j$ 行($1 \le j \le L$)包含一个整数 $X_j$。这表示初始补给计划为 $X_1, X_2, \ldots, X_L$。
- 接下来的 $T$ 行中,第 $k$ 行($1 \le k \le T$)包含两个以空格分隔的整数 $P_k$ 和 $Q_k$。这表示 JOI-kun 将在第 $k$ 天早晨把补给计划中的第 $P_k$ 个值修改为 $Q_k$。
输出格式
向标准输出写入 $T$ 行。第 $k$ 行($1 \le k \le T$)应包含 $-1$,若他在第 $k$ 天无法执行补给计划;否则,输出他能够执行该计划所需的最短时间(单位:小时)。
说明/提示
### 样例 1 解释
在样例输入 1 中,初始补给计划为 1、2、3。JOI-kun 在第 1 天早晨将该补给计划的第 3 个值修改为 1。因此,第 1 天的补给计划为 1、2、1。
首先,JOI-kun 在补给站 1 供应食物。接着,他使用第 1 条道路从补给站 1 前往补给站 2,并在补给站 2 供应食物。然后,他使用第 2 条道路从补给站 2 前往补给站 3。最后,他使用第 3 条道路从补给站 3 前往补给站 1,并在补给站 1 供应食物。如此执行补给计划共需 3 小时。由于这是可能的最短时间,输出 3。
请注意,JOI-kun 不能按 1 → 2 → 1 的路径移动,因为他不能掉头。
### 样例 2 解释
在样例输入 2 中,第 1 天的补给计划为 4、1、4。首先,JOI-kun 在补给站 4 供应食物。接着,他使用第 4 条道路从补给站 4 前往补给站 1,并在补给站 1 供应食物。然后,他按顺序使用第 1、2、3、4 条道路,依次经过补给站 1 → 2 → 3 → 1 → 4,并在补给站 4 供应食物。此路径耗时最短。
第 4 天的补给计划为 2、4、2。由于 JOI-kun 无法执行该计划,输出 -1。
### 数据范围
所有输入数据满足以下条件:
- $2 \le N \le 2\,000$。
- $N - 1 \le M \le 2\,000$。
- $1 \le T \le 100\,000$。
- $2 \le L \le 100\,000$。
- $1 \le A_i < B_i \le N$($1 \le i \le M$)。
- $(A_i, B_i) \ne (A_j, B_j)$($1 \le i < j \le M$)。
- 从任意补给站出发,均可经由一条或多条道路抵达其他任意补给站。
- $1 \le C_i \le 1\,000\,000\,000$($1 \le i \le M$)。
- $1 \le X_j \le N$($1 \le j \le L$)。
- $1 \le P_k \le L$($1 \le k \le T$)。
- $1 \le Q_k \le N$($1 \le k \le T$)。
- 对每个 $j$($1 \le j \le L - 1$),有 $X_j \ne X_{j+1}$。此外,在每次修改补给计划后,对每个 $j$($1 \le j \le L - 1$),仍满足 $X_j \ne X_{j+1}$。
### 子任务
共有 4 个子任务。每个子任务的得分及附加约束如下:
**子任务 1 [12 分]**
- $N \le 10$。
- $M \le 10$。
- $T = 1$。
- $L \le 10$。
- $C_i \le 10$($1 \le i \le M$)。
**子任务 2 [35 分]**
- $N \le 500$。
- $M \le 500$。
- $T = 1$。
**子任务 3 [15 分]**
- $T = 1$。
**子任务 4 [38 分]**
无额外约束。
翻译由 Qwen3-235B 完成