智乃酱的子树查询类问题
题号:NC235719
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

智乃酱最喜欢树上的查询问题啦,这天,他给了你一颗大小为的有根树,并且树的根节点为号节点,每个节点有一个权值
定义树上节点的深度为该节点到根节点的最短距离,我们认为根节点的深度为

对于节点,由以及的所有后裔(后代)导出的子图称为子树
子树的根节点为,并且节点在该子树中的深度为

智乃酱现在将会问你个问题。
对于每个问题,它将会给你三个参数表示询问以为根的子树中,节点深度在该子树中不小于且不大于的所有节点。

你需要告诉智乃酱三个信息,所有符合条件节点的最小值,最大值,以及它们的和。

输入描述:

首先输入一个正整数表树的大小。
接下来一行输入n个正整数val_i 表示每个节点的权值。
接下来n-1行,每行两个数u_i,v_i 表示一条连接树上两个节点的边。
接下来输入一个正整数表示查询的数目。
接下来m行每行三个整数表示一个查询,其中表示子树x的最深深度。

输出描述:

对于每个查询,输出一行三个整数,所有符合条件节点的最小值,最大值,以及它们的和,输出的三个整数之间用空格隔开。
示例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