#P51181. 「CEOI2019」动态直径

「CEOI2019」动态直径

题目描述

译自 CEOI 2019 Day1 T2「Dynamic Diameter

你有一个 nn 个节点的树,每条边有边权,有 qq 次更新,每次修改一条边的边权,并询问树的直径。

本题强制在线。

输入格式

第一行输入三个正整数 n,q,wn, q, w,表示节点数,询问数,以及一条边权值的上限。

接下来 n1n - 1 行,其中第 ii 行三个整数 ai,bi,ci(1ai,bin,0ci<w)a_i, b_i, c_i (1\le a_i, b_i \le n, 0\le c_i < w),表示链接节点 ai,bia_i, b_i 的一条边权值为 cic_i

接下来 qq 行,每行两个整数 d,e(0d<n1,0e<w)d, e (0\le d < n - 1, 0 \le e < w),表示加密前的数据。

last\mathrm{last} 为上次询问的答案,第一次时为 00。解密后的数据为 d=(d+last)mod(n1)+1,e=(e+last)modwd' = (d + \mathrm{last}) \bmod (n - 1) + 1, e' = (e + \mathrm{last}) \bmod w。表示将第 dd' 条边的权值修改为 ee'

输出格式

输出 qq 行,每行一个整数,表示修改后的直径。

样例 1

4 3 2000
1 2 100
2 3 1000
2 4 1000
2 1030
1 1020
1 890
2030
2080
2050

这组样例如下图所示:

最左端图片是这棵树的初始状态,接下来的每张图表示在更新之后的情况。更改后的边权用绿色标记,直径用红色标记。

第一个询问更改了第三条边的边权,即 {2,4}\{2,4\} 的边权改为 10301030。两点间最大距离为 20302030,即 3344 的距离。

因为第一个询问的答案为 20302030,第二个询问为:

d2=(1+2030)mod3=0e2=(1020+2030)mod2000=1050d_2'=(1+2030)\bmod 3=0\\ e_2'=(1020+2030)\bmod 2000=1050\\

因此边 {1,2}\{1,2\} 的边权改为 10501050,这使得从 1144 的距离最大,距离为 20802080

第三个询问为:

d3=(1+2080)mod3=2e3=(890+2080)mod2000=970d_3'=(1+2080)\bmod 3=2\\ e_3'=(890+2080)\bmod 2000=970\\

因此边 {2,4}\{2,4\} 的边权改为 970970,这使得从 1133 的距离最大,距离为 20502050

10 10 10000
1 9 1241
5 6 1630
10 5 1630
2 6 853
10 1 511
5 3 760
8 3 1076
4 10 1483
7 10 40
8 2051
5 6294
5 4168
7 1861
0 5244
6 5156
3 3001
8 5267
5 3102
8 3623
6164
7812
8385
6737
6738
7205
6641
7062
6581
5155

数据范围与提示

对于 100%100\% 的数据,保证 2n105,1q105,1w2×10132\le n \le 10^5, 1\le q\le 10^5, 1\le w \le 2\times 10^{13}

子任务编号 n,qn, q ww 特殊限制 分值
11 102\le 10^2 104\le 10^4 1111
22 5×103\le 5\times 10^3 1313
33 105\le 10^5 边的形式都为 (1,i)(1, i) 77
44 边的形式都为 (i,2i)(i, 2i)(i,2i+1)(i, 2i + 1) 1818
55 2×1013\le 2\times 10^{13} 保证有一条直径经过 11 号节点 2424
66 2727