#P14365. [JOISC 2018] 高速公路建设 / Construction of Highway

    ID: 16126 远端评测题 1000ms 256MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>2018颜色段均摊(珂朵莉树 ODT)树链剖分JOISC/JOIST(日本)

[JOISC 2018] 高速公路建设 / Construction of Highway

题目描述

JOI 王国有 NN 个城市,编号从 11NN。城市 11 是首都。每个城市都有一个称为“活力值”的数值,城市 ii1iN1 \le i \le N)的初始活力值为 CiC_i

JOI 王国中的道路是双向连接两个不同城市的。最初,JOI 王国中没有道路。你计划进行 N1N-1 次道路建设。第 jj 次建设(1jN11 \le j \le N-1)按以下方式进行:

  • 选定两个城市 AjA_jBjB_j,满足:仅使用当时已建成的道路,可以从城市 11 到达城市 AjA_j,但无法从城市 11 到达城市 BjB_j

  • 你建设一条连接城市 AjA_j 和城市 BjB_j 的道路。此次建设的成本是满足以下条件的城市对 (s,t)(s, t) 的数量:

    城市 ss 和城市 tt 位于从城市 11 到城市 AjA_j 的最短路径上,且当从城市 11 前往城市 AjA_j 时,先经过城市 ss,再经过城市 tt,且城市 ss 的活力值严格大于城市 tt 的活力值。

    这里,位于城市 11 和城市 AjA_j 之间的路径上的城市包括城市 11 和城市 AjA_j。注意,城市 11 与城市 AjA_j 之间的最短路径是唯一的。

  • 所有位于城市 11 与城市 AjA_j 之间路径上的城市的活力值,均更新为城市 BjB_j 的活力值。

你希望知道每次建设的成本。

任务

给定城市数据和道路建设方案,编写一个程序,计算每次建设的成本。

输入格式

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

  • 输入的第一行包含一个整数 NN。这意味着 JOI 王国有 NN 个城市。
  • 输入的第二行包含 NN 个以空格分隔的整数 C1,C2,,CNC_1, C_2, \cdots, C_N。这意味着城市 ii1iN1 \le i \le N)的初始活力值为 CiC_i
  • 接下来的 N1N-1 行中,第 jj 行(1jN11 \le j \le N-1)包含两个以空格分隔的整数 Aj,BjA_j, B_j。这意味着在第 jj 次道路建设中,选定城市 AjA_j 和城市 BjB_j

输出格式

向标准输出写入 N1N-1 行。第 jj 行(1jN11 \le j \le N-1)包含第 jj 次道路建设的成本。

5
1 2 3 4 5
1 2
2 3
2 4
3 5
0
0
0
2
10
1 7 3 4 8 6 2 9 10 5
1 2
1 3
2 4
3 5
2 6
3 7
4 8
5 9
6 10
0
0
0
1
1
0
1
2
3

提示

样例 1 解释

在样例输入 1 中,建设过程如下:

  • 在第一次建设中,不存在满足条件的城市对 (s,t)(s, t),因此成本为 00。修建一条连接城市 11 和城市 22 的道路,城市 11 的活力值更新为 22
  • 在第二次建设中,同样不存在满足条件的城市对 (s,t)(s, t),因此成本为 00。修建一条连接城市 22 和城市 33 的道路,城市 11 和城市 22 的活力值均更新为 33
  • 在第三次建设中,仍不存在满足条件的城市对 (s,t)(s, t),因此成本为 00。修建一条连接城市 22 和城市 44 的道路,城市 11 和城市 22 的活力值均更新为 44
  • 在第四次建设中,有两个城市对 (s,t)=(1,3),(2,3)(s, t) = (1,3), (2,3) 满足条件,因此成本为 22。修建一条连接城市 33 和城市 55 的道路,城市 11、城市 22 和城市 33 的活力值均更新为 55

数据范围

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

  • 1N1000001 \le N \le 100\,000
  • 1Ci10000000001 \le C_i \le 1\,000\,000\,0001iN1 \le i \le N)。
  • 1AjN1 \le A_j \le N1jN11 \le j \le N-1)。
  • 1BjN1 \le B_j \le N1jN11 \le j \le N-1)。
  • 在第 jj 次建设之前,仅使用已建成的道路,可以从城市 11 到达城市 AjA_j,但无法从城市 11 到达城市 BjB_j1jN11 \le j \le N-1)。

子任务

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

子任务 1 [7 分]

  • N500N \le 500

子任务 2 [9 分]

  • N4000N \le 4000

子任务 3 [84 分]

无额外约束。

翻译由 Qwen3-235B 完成