题号:NC235719
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
智乃酱最喜欢树上的查询问题啦,这天,他给了你一颗大小为

的有根树,并且树的根节点为

号节点,每个节点有一个权值

。
定义树上节点的深度为该节点到根节点的最短距离,我们认为根节点的深度为

。
对于节点

,由

以及

的所有后裔(后代)导出的子图称为子树

。
子树

的根节点为

,并且节点

在该子树中的深度为

。
智乃酱现在将会问你

个问题。
对于每个问题,它将会给你三个参数

表示询问以

为根的子树中,节点深度在该子树中不小于

且不大于

的所有节点。
你需要告诉
智乃酱三个信息,所有符合条件节点的最小值,最大值,以及它们的和。
输入描述:
首先输入一个正整数
表树的大小。
接下来一行输入
个正整数
表示每个节点的权值。
接下来
行,每行两个数
表示一条连接树上两个节点的边。
接下来输入一个正整数
表示查询的数目。
接下来
行每行三个整数
表示一个查询,其中
表示子树
的最深深度。
输出描述:
对于每个查询,输出一行三个整数,所有符合条件节点的最小值,最大值,以及它们的和,输出的三个整数之间用空格隔开。
示例1
输入
复制
8
1 8 5 2 3 4 6 5
1 2
1 3
2 4
2 5
2 6
5 7
5 8
7
1 0 3
1 0 0
1 1 1
2 1 2
2 0 2
3 0 0
5 0 1
输出
复制
1 8 34
1 1 1
5 8 13
2 6 20
2 8 28
5 5 5
3 6 14