Transmigration tree

Accepts: 3
Submissions: 46
Time Limit: 10000/5000 MS (Java/Others)
Memory Limit: 131072/131072 K (Java/Others)
问题描述
有一颗树,$n$个节点,编号从$1$到$n$,每个节点有个权值,但是每个叶子节点都是根的父亲,我们称这样的树为轮回树,每棵树都是以$1$号节点为根的。
现在要求节点$u$到节点$v$权值和最小的路径的权值和以及这条路径上的权值最大的节点的权值。
输入描述
第一行输入一个整数$T$,有$T$组数据$(1 \leq T \leq 10)$。
每组数据第一行输入两个整数$n, q$,分别表示节点数和询问数$(2 \leq n \leq 50000, 1 \leq q \leq 100000)$。
第二行有$n - 1$个整数$A_i$,表示第$i + 1$个节点的父亲是节点$A_i (1 \leq Ai \leq i )$。
第三行有$n$个整数$B_i$,表示第$i$个节点的权值是$B_i( 0 \leq Bi \leq 1000 )$。
接下来$q$行,每行输入两个整数$u, v$,表示询问节点$u$到节点$v$权值和最小的路径以及这条路径上的权值最大的节点$( 1 \leq u, v \leq n )$。
输出描述
对于每个询问输出节点u到节点v权值和最小的路径的权值和以及这条路径上的权值最大的节点的权值,中间用空格隔开,如果有多条路径,请算出最大节点权值最大的。
输入样例
1
5 1
1 2 3 4
413 127 263 869 960
1 5
输出样例
1373 960