#P9665. [ICPC 2021 Macao R] Colorful Tree

    ID: 10969 远端评测题 6000ms 512MiB 尝试: 0 已通过: 0 显示难度省选/NOI− 上传者: 标签>线段树2021O2优化树论ICPC澳门

[ICPC 2021 Macao R] Colorful Tree

题目描述

你的任务是维护一棵有色树并处理查询。

一开始,树上只有一个编号为 11 的顶点,颜色为 CC。然后按顺序进行 qq 个操作,有两种类型:

  • 00 xx cc dd:向树中添加一个颜色为 cc 的新顶点,其编号为 (n+1)(n+1),其中 nn 是当前存在的顶点数。同时,添加一条连接顶点 xx 和 (n+1)(n+1) 的长度为 dd 的边。
  • 11 xx cc:将顶点 xx 的颜色更改为 cc。

在每次操作之后,你应该找到当前树中颜色 不同\textbf{不同} 的两个顶点 uu 和 vv(1≤u,v≤n1 \le u, v \le n),使得它们之间的距离尽可能大。

两个顶点 uu 和 vv 之间的距离是树上从 uu 到 vv 的最短路径的长度。

输入格式

存在多个测试用例。输入的第一行包含一个整数 TT ,表示测试用例的数量。对于每个测试用例:

输入的第一行包含两个整数 qq 和 CC(1≤q≤5×1051 \le q \le 5 \times 10^5,1≤C≤q1 \le C \le q),表示操作的数量和顶点 11 的初始颜色。

接下来的 qq 行中,每行描述一个按顺序进行的操作,包含 33 或 44 个整数。

  • 如果第 ii 行包含 44 个整数 00、xix_i、cic_i 和 did_i(1≤xi≤n1 \le x_i \le n,1≤ci≤q1 \le c_i \le q,1≤d≤1091 \le d \le 10^9),则第 ii 个操作将向树中添加一个颜色为 cic_i 的新顶点 (n+1)(n + 1),并将其与顶点 xix_i 连接,边的长度为 did_i。
  • 如果第 ii 行包含 33 个整数 11、xix_i 和 cic_i(1≤xi≤n1 \le x_i \le n,1≤ci≤q1 \le c_i \le q),则第 ii 个操作将顶点 xix_i 的颜色更改为 cic_i。

保证所有测试用例中 qq 的总和不超过 5×1055 \times 10^5。

输出格式

对于每个操作,输出两个不同颜色顶点之间的最大距离。如果不存在有效的顶点对,则输出 00。

翻译来自于:ChatGPT

2
1 1
0 1 1 1
5 1
0 1 1 1
0 1 2 1
0 3 3 1
1 4 1
1 3 1
0
0
2
3
2
0