#P14567. [Bulgarian 2024]longest

    ID: 13784 传统题 2000ms 256MiB 尝试: 2 已通过: 1 难度: 8 上传者: 标签>CF2500数据结构线段树DFS倍增排序LCA

[Bulgarian 2024]longest

题目描述

给定一棵带权树,共有 nn 个点。

ii 条边连接顶点 uiu_iviv_i,边长为 wiw_i

请你编写程序 longest,支持 qq 次操作,操作分为两种类型:

  • 1 x k n_1 ... n_k:求从顶点 xx 到某个顶点 yy最长路径长度,要求从 xxyy 的路径不能经过顶点 n1,n2,,nkn_1, n_2, \dots, n_k 中的任何一个。
  • 2 i 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,则输入格式为:

    1 x k n_1 n_2 ... n_k

  • 如果操作类型为 2,则输入格式为:

    2 i w

输出格式

对于每个类型为 1 的操作,输出一行一个整数,表示答案。

数据范围

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

子任务

子任务 分值 额外限制
1 5 n,q5000n, q \le 5000
2 15 每个点的度数都不超过 22
3 k=0k = 0
4 30 没有第二类操作
5 35 无额外限制

只有通过某个子任务的全部测试点,才能获得该子任务的分数。

样例输入

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

样例说明

上述若干次第一类询问中,满足条件的目标点 yy 依次为:

5,5,5,5,3,3,4,4,25, 5, 5, 5, 3, 3, 4, 4, 2