#CF1806E. 树上点积
树上点积
树上点积
- 时间限制:3 秒
- 内存限制:512 MiB
题目描述
给定一棵有 个带权顶点的树,顶点编号为 到 ,以顶点 为根。顶点 的父节点为 ,顶点 的权值为 。定义 。
对于两个深度相同的顶点 ,定义
$$f(x,y)=a_xa_y+a_{p_x}a_{p_y}+a_{p_{p_x}}a_{p_{p_y}}+\cdots,$$直到两个点同时越过根节点为止。
你需要回答 个询问。每个询问给出两个深度相同的顶点 ,求 。
输入格式
第一行包含两个整数 。
第二行包含 个整数 。
第三行包含 个整数 。
接下来 行,每行包含两个整数 。保证 深度相同。
输出格式
输出 行,每行一个整数,表示对应询问的答案。
样例输入 1
6 2
1 5 2 3 1 1
1 2 3 3 2
4 5
6 6
样例输出 1
33
27
样例输入 2
14 8
3 2 5 3 1 4 2 2 2 5 5 5 2 4
1 2 3 1 1 4 7 3 3 1 5 3 8
4 4
4 10
13 10
3 12
13 9
3 12
9 10
11 5
样例输出 2
47
53
48
36
42
36
48
14
数据范围
对于所有数据:,,,。
| 子任务编号 | 分值 | 特殊限制 |
|---|---|---|
| 1 | 20 | 对所有 ,均有 |
| 2 | 40 | |
| 3 | 无特殊限制 |