#P15842. [Bulgarian NOI 2024] 最长路径 / longest

[Bulgarian NOI 2024] 最长路径 / longest

说明

给定一棵包含 nn 个顶点的带权树,其边为 (u1,v1)(u_1, v_1)(权重 w1w_1)、(u2,v2)(u_2, v_2)(权重 w2w_2)、…、(un1,vn1)(u_{n-1}, v_{n-1})(权重 wn1w_{n-1})。请编写程序,支持 qq 次查询,每次查询属于以下两种类型之一:

  • 类型 1:输入 x,k,n1,,nkx, k, n_1, \dots, n_k,要求找出从顶点 xx 到任意顶点 yy 的最长路径长度,其中路径从 xxyy 不得经过任何被指定的顶点 n1,,nkn_1, \dots, n_k
  • 类型 2:输入 i,wi, w,表示将第 ii 条边 (ui,vi)(u_i, v_i) 的权重修改为 ww

输入格式

从标准输入的第一行读入整数 nn。接下来的 n1n - 1 行,每行包含三个整数 ui,vi,wiu_i, v_i, w_i,表示连接顶点 uiu_iviv_i 的一条边,其权重为 wiw_i。再下一行读入整数 qq。随后的 qq 行中,每行首先给出查询类型(1 或 2):

  • 若类型为 1,则接着读入 xxkk,以及 kk 个整数 n1,,nkn_1, \dots, n_k
  • 若类型为 2,则接着读入 iiww

输出格式

对于每个类型 1 的查询,在标准输出上单独一行打印所求的最长路径长度。

5
1 2 1
1 4 2
2 3 3
2 5 4
10
1 1 0
1 2 0
1 3 0
1 4 0
1 5 0
1 1 1 5
1 1 1 2
2 1 100
1 2 0
1 2 4 1 3 4 5
5
4
7
7
7
4
2
102
0

提示

样例 1 解释

在查询中需要寻找的目标顶点依次是 5,5,5,3,3,4,4,25, 5, 5, 3, 3, 4, 4, 2

限制条件

  • 1n,q, k2000001 \le n, q,\ \sum k \le 200000
  • 1ui,vin1 \le u_i, v_i \le n
  • 1w,wi1091 \le w, w_i \le 10^9
  • 对所有 1ik1 \le i \le k,有 nixn_i \ne x
  • 对所有 1ijk1 \le i \ne j \le k,有 ninjn_i \ne n_j

子任务

子任务 分数 额外限制条件
11 55 n,q5000n, q \le 5000
22 1515 每个顶点的度数至多为 22
33 k=0k = 0
44 3030 不存在类型 22 的查询
55 3535

只有当成功通过某子任务所对应的所有测试点时,才能获得该子任务的分数。

翻译由 Qwen3.5-397B-A17B 完成