#P14376. [JOISC 2018] 野猪 / Wild Boar

    ID: 16137 远端评测题 10000ms 1024MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>2018线段树最短路JOISC/JOIST(日本)

[JOISC 2018] 野猪 / Wild Boar

题目描述

JOI-kun 是一只生活在 IOI 森林中的野猪,森林中有 NN 个补给站和 MM 条道路。补给站编号为 11NN。第 ii 条道路(1iM1 \le i \le M)双向连接补给站 AiA_iBiB_i,JOI-kun 沿该道路往返任一方向均需耗时 CiC_i 小时。从任意补给站出发,均可经由一条或多条道路抵达其他任意补给站。

JOI-kun 不擅长掉头。他不能在道路中途掉头返回刚离开的补给站。此外,当他通过某条道路抵达一个补给站后,不能沿原路立即返回上一个补给站。

每天,JOI-kun 根据 补给计划 在补给站供应食物。每日的补给计划由一个长度为 LL 的补给站序列 X1,X2,,XLX_1, X_2, \ldots, X_L 组成。他从补给站 X1X_1 开始供应,按顺序访问各补给站,最终在补给站 XLX_L 结束供应。途中允许经过其他补给站。他可能多次在同一个补给站供应食物,但需满足对每个 jj1jL11 \le j \le L - 1),有 XjXj+1X_j \ne X_{j+1}。请注意,可能存在他无法执行的补给计划。

初始时,JOI-kun 制定初始补给计划 X1,X2,,XLX_1, X_2, \ldots, X_L。在第 kk 天早晨(1kT1 \le k \le T),他会将计划中第 PkP_k 个值修改为 QkQ_k(即 XPkX_{P_k} 变为 QkQ_k),然后按新计划供应食物。修改后,对每个 jj1jL11 \le j \le L - 1),仍满足 XjXj+1X_j \ne X_{j+1}

对于 TT 天内每一天的补给计划,JOI-kun 希望判断他是否能够执行该计划;若可以执行,则求出按该计划供应食物所需的最短时间。

任务

给定 IOI 森林的数据和 JOI-kun 的补给计划,对于 TT 天内每一天的补给计划,编写一个程序,判断他是否能够执行该计划;若可以执行,则求出按该计划供应食物所需的最短时间。

输入格式

从标准输入读取以下数据:

  • 输入第一行包含四个以空格分隔的整数 NNMMTTLL。这表示 IOI 森林中有 NN 个补给站和 MM 条道路,JOI-kun 考虑 TT 天的补给计划,且补给计划由长度为 LL 的序列构成。
  • 接下来的 MM 行中,第 ii 行(1iM1 \le i \le M)包含三个以空格分隔的整数 AiA_iBiB_iCiC_i。这表示第 ii 条道路双向连接补给站 AiA_iBiB_i,JOI-kun 沿该道路往返任一方向均需耗时 CiC_i 小时。
  • 接下来的 LL 行中,第 jj 行(1jL1 \le j \le L)包含一个整数 XjX_j。这表示初始补给计划为 X1,X2,,XLX_1, X_2, \ldots, X_L
  • 接下来的 TT 行中,第 kk 行(1kT1 \le k \le T)包含两个以空格分隔的整数 PkP_kQkQ_k。这表示 JOI-kun 将在第 kk 天早晨把补给计划中的第 PkP_k 个值修改为 QkQ_k

输出格式

向标准输出写入 TT 行。第 kk 行(1kT1 \le k \le T)应包含 1-1,若他在第 kk 天无法执行补给计划;否则,输出他能够执行该计划所需的最短时间(单位:小时)。

3 3 1 3
1 2 1
2 3 1
1 3 1
1
2
3
3 1
3
4 4 4 3
1 2 1
2 3 1
1 3 1
1 4 1
4
1
3
3 4
1 2
3 2
2 4
5
2
3
-1
5 6 1 5
1 2 8
1 3 8
1 4 8
2 5 2
3 4 6
4 5 6
2
5
1
5
3
5 2
38

提示

样例 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。

数据范围

所有输入数据满足以下条件:

  • 2N20002 \le N \le 2\,000
  • N1M2000N - 1 \le M \le 2\,000
  • 1T1000001 \le T \le 100\,000
  • 2L1000002 \le L \le 100\,000
  • 1Ai<BiN1 \le A_i < B_i \le N1iM1 \le i \le M)。
  • (Ai,Bi)(Aj,Bj)(A_i, B_i) \ne (A_j, B_j)1i<jM1 \le i < j \le M)。
  • 从任意补给站出发,均可经由一条或多条道路抵达其他任意补给站。
  • 1Ci10000000001 \le C_i \le 1\,000\,000\,0001iM1 \le i \le M)。
  • 1XjN1 \le X_j \le N1jL1 \le j \le L)。
  • 1PkL1 \le P_k \le L1kT1 \le k \le T)。
  • 1QkN1 \le Q_k \le N1kT1 \le k \le T)。
  • 对每个 jj1jL11 \le j \le L - 1),有 XjXj+1X_j \ne X_{j+1}。此外,在每次修改补给计划后,对每个 jj1jL11 \le j \le L - 1),仍满足 XjXj+1X_j \ne X_{j+1}

子任务

共有 4 个子任务。每个子任务的得分及附加约束如下:

子任务 1 [12 分]

  • N10N \le 10
  • M10M \le 10
  • T=1T = 1
  • L10L \le 10
  • Ci10C_i \le 101iM1 \le i \le M)。

子任务 2 [35 分]

  • N500N \le 500
  • M500M \le 500
  • T=1T = 1

子任务 3 [15 分]

  • T=1T = 1

子任务 4 [38 分]

无额外约束。

翻译由 Qwen3-235B 完成