P15842 [Bulgarian NOI 2024] 最长路径 / longest
题目描述
给定一棵包含 $n$ 个顶点的带权树,其边为 $(u_1, v_1)$(权重 $w_1$)、$(u_2, v_2)$(权重 $w_2$)、…、$(u_{n-1}, v_{n-1})$(权重 $w_{n-1}$)。请编写程序,支持 $q$ 次查询,每次查询属于以下两种类型之一:
- 类型 1:输入 $x, k, n_1, \dots, n_k$,要求找出从顶点 $x$ 到任意顶点 $y$ 的最长路径长度,其中路径从 $x$ 到 $y$ 不得经过任何被指定的顶点 $n_1, \dots, n_k$。
- 类型 2:输入 $i, w$,表示将第 $i$ 条边 $(u_i, v_i)$ 的权重修改为 $w$。
输入格式
从标准输入的第一行读入整数 $n$。接下来的 $n - 1$ 行,每行包含三个整数 $u_i, v_i, w_i$,表示连接顶点 $u_i$ 和 $v_i$ 的一条边,其权重为 $w_i$。再下一行读入整数 $q$。随后的 $q$ 行中,每行首先给出查询类型(1 或 2):
- 若类型为 1,则接着读入 $x$、$k$,以及 $k$ 个整数 $n_1, \dots, n_k$;
- 若类型为 2,则接着读入 $i$ 和 $w$。
输出格式
对于每个类型 1 的查询,在标准输出上单独一行打印所求的最长路径长度。
说明/提示
### 样例 1 解释
在查询中需要寻找的目标顶点依次是 $5, 5, 5, 3, 3, 4, 4, 2$。
### 限制条件
- $1 \le n, q,\ \sum k \le 200000$
- $1 \le u_i, v_i \le n$
- $1 \le w, w_i \le 10^9$
- 对所有 $1 \le i \le k$,有 $n_i \ne x$
- 对所有 $1 \le i \ne j \le k$,有 $n_i \ne n_j$
### 子任务
| 子任务 | 分数 | 额外限制条件 |
|:------:|:----:|:------------:|
| $1$ | $5$ | $n, q \le 5000$ |
| $2$ | $15$ | 每个顶点的度数至多为 $2$ |
| $3$ | $15$ | $k = 0$ |
| $4$ | $30$ | 不存在类型 $2$ 的查询 |
| $5$ | $35$ | 无 |
只有当成功通过某子任务所对应的所有测试点时,才能获得该子任务的分数。
翻译由 Qwen3.5-397B-A17B 完成