请注意本题特殊的空间限制。
“生命野蛮蓬勃,大地千变万化。人造机器轰鸣运作,源石能的光辉照亮了暗影。人们挣扎在暗处,向往光明,在辉煌时轻视阴影,如是反复。”
给定一棵由编号为 1,2,3,⋯,n1,2,3,⋯,n 的点构成的有根树。记 didi 表示编号为 ii(1≤i≤n1≤i≤n)的点到树根的唯一简单路径上的 点数(对于树根本身,这个值为 11)。
现在有 qq 次询问。第 ii(1≤i≤q1≤i≤q)次询问给定整数 xi,yi,zixi,yi,zi。对于整数 jj(1≤j≤n1≤j≤n),定义 vj=dLCA(j,xi)vj=dLCA(j,xi),其中 LCA(u,v)LCA(u,v) 表示编号分别为 u,vu,v 的点的最近公共祖先的编号。
对于第 ii(1≤i≤q1≤i≤q)次询问,求满足 j−vj≤yi≤j≤j+vj≤zij−vj≤yi≤j≤j+vj≤zi 的整数 jj(1≤j≤n1≤j≤n)中,j+vjj+vj 的最大值。如果 yi>ziyi>zi 或者不存在符合条件的整数,答案为 00。
本题包含多组测试数据。
来自 Kal'tsit 的温馨提示:本题输入输出量较大,请使用合适的输入输出方式。你可以使用下面链接中给出的输入输出模板。同时请选手注意代码的时间和空间常数消耗,常数过大,例如滥用 C++ STL 容器的代码不保证能够通过。
https://www.luogu.me/paste/y4lm88ha
首先在第一行输入一个整数 TT(1≤T≤3.5×1051≤T≤3.5×105)表示测试数据组数。
对于每一组测试数据,输入包含 q+2q+2 行。
第一行包含两个整数 n,qn,q(1≤n≤8×104,1≤q≤1051≤n≤8×104,1≤q≤105,1≤∑n≤3.5×105,1≤∑q≤5×1051≤∑n≤3.5×105,1≤∑q≤5×105),分别表示树上点的数量和询问的次数。
第二行包含 nn 个整数 fa1,fa2,fa3,⋯,fanfa1,fa2,fa3,⋯,fan(0≤fa1,fa2,fa3,⋯,fan≤n0≤fa1,fa2,fa3,⋯,fan≤n)表示每个点的父亲编号。若 fai=0fai=0(1≤i≤n1≤i≤n)则表示编号为 ii 的点为树根。
接下来 qq 行,第 i+2i+2(1≤i≤q1≤i≤q)行包含三个整数 xi′,yi′,zi′xi′,yi′,zi′(0≤xi′,yi′,zi′<1090≤xi′,yi′,zi′<109),表示与第 ii 次询问的参数有关的三个数。
对于第 ii(1≤i≤q1≤i≤q)次询问,你需要通过以下操作得到 xi,yi,zixi,yi,zi:
保证输入的是一棵有根树。
对于每一组测试数据,输出包含 qq 行。
第 ii(1≤i≤q1≤i≤q)行包含一个整数表示第 ii 次询问的答案。
5
5 5
2 3 4 5 0
3 428538 54277
3 417360 4017
3 892741 445551
4 964351 433610
4 472928 556419
5 5
2 0 5 3 1
2 145658 137247
5 616008 743457
3 236233 341788
5 338103 325826
2 722091 315410
5 5
5 0 4 2 3
1 904355 654626
2 418807 822821
4 45452 454729
5 4372 624796
3 138698 133893
5 5
2 0 1 5 2
1 698219 122911
5 682494 893039
3 293682 893575
1 804585 301494
5 634397 319946
15 15
5 4 4 9 3 7 9 15 0 3 12 6 9 3 9
2 305062 35660
3 843437 749658
11 170333 369270
1 311572 416623
8 860851 743360
4 16581 926304
5 369493 824555
6 517688 889937
8 710314 148564
7 21922 973381
13 790964 3688
7 989786 105365
1 359041 27784
6 623431 2814
6 678899 377943
3
6
0
0
3
0
3
2
0
3
0
0
5
0
0
6
0
0
0
5
0
0
4
0
3
13
7
8
0
17
0
4
0
0
0