‹ 上一题 下一题 ›

g7-07686. 子树查询 未做

1000 ms 256 MB 测试点 10 通过率 100% 自拟题GESP-77级·树上路径与LCA阶梯·进阶

题目描述

给定一棵以 号结点为根的树,结点编号为 ,第 个结点有一个非负整数点权 。

一个结点 的子树,指的是 本身以及它的所有后代结点组成的集合。

现在有 次询问,每次询问给出一个操作类型 和一个结点 :

  • 若 ,求 的子树内包含的结点个数;
  • 若 ,求 的子树内所有结点的点权之和。

输入格式

第一行一个正整数 ,表示树的结点数。

第二行 个非负整数 ,依次表示每个结点的点权。

接下来 行,每行两个正整数 ,表示结点 与结点 之间有一条边;当 时没有边。保证这些边构成一棵以 号结点为根的树。

接下来一行一个正整数 ,表示询问次数。

接下来 行,每行两个整数 ,表示一次询问,其中 ,。

输出格式

共 行,每行一个整数,依次表示每次询问的答案。

样例

输入:

6
2 5 1 4 3 6
1 2
1 3
2 4
2 5
3 6
5
1 1
2 2
1 3
2 4
2 1

输出:

6
12
2
4
21

样例说明:

以 为根时,各结点的子树如下:

  • 结点 的子树包含全部 个结点,权值和为 ;
  • 结点 的子树为 ,共 个结点,权值和为 ;
  • 结点 的子树为 ,共 个结点,权值和为 ;
  • 结点 的子树只有 ,权值和为 。

因此前四次询问的答案依次为 ,最后一次询问结点 的权值和为 。

数据范围

  • ,;
  • ;
  • ,保证输入的 条边构成一棵树;
  • 子树权值和可能超过 位整数范围,请使用 位整数(C++ 中的 long long)保存答案。
输入
输出

            
答案