#P005902. 树上的游戏

树上的游戏

题目描述

AA 开发了一款树上的游戏。

游戏界面上有一棵树,该树共有 NN 个结点,由 N1N - 1 条边将树上所有的结点连在一起。

树上的第 ii 个点,有 CiC_i 个金币,游戏人物只要移动到第 ii 个点,他可以选择拿走这个结点上的 CiC_i 个金币,也可以选择不拿这个结点上的金币

如果游戏人物选择拿走第 ii 个结点上的 CiC_i 个金币,当游戏人物离开这个结点时,金币会重新产生。也就是说,游戏人物下次再走到第 ii 个点,任然可以选择拿走这个结点上的 CiC_i 个金币。游戏人物每经过树上的一条边,就能获得 11 个点的经验值。

游戏共有 MM 轮,每轮游戏开始,游戏人物会空降到树上编号为 UiU_i 的结点,它的目标点是树上编号为 ViV_i 的结点,当游戏人物到达目标点,本轮游戏结束。在每轮游戏中,游戏人物只能取走从 UiU_i 出发到 ViV_i 结束这条路线上的其中一个结点上的金币

请你编程计算出,当 MM 轮游戏结束后,游戏人物最多可以获得多少金币、多少经验值。

输入格式

11 行,读入 22 个整数 N,MN, M

接下来的 N1N - 1 行,每行读入 22 个整数 Xi,YiX_i, Y_i,表示第 ii 条边连接编号为 XiX_i 和编号为 YiY_i 的两个结点。

接下来的 11 行,该行共有 NN 个整数,依次代表从编号为 1,2,3,,N2,N1,N1, 2, 3, … , N - 2, N - 1, N 的结点,每个结点上的金币数量。

接下来的 MM 行,每行读入 22 个整数 Ui,ViU_i, V_i,表示第 ii 轮游戏开始时,游戏人物空降到编号为 UiU_i 的结点,目标点是编号为 ViV_i 的结点。

输出格式

输出一行,共 22 个整数,分别代表 MM 轮游戏结束后,总共获得的金币和经验值。

样例

输入

5 3
4 1
5 4
3 4
4 2
11 12 6 12 5
4 1
2 1
4 3

输出

36 4

输入

6 3
2 1
5 2
3 2
6 2
4 1
9 1 9 4 15 1
3 6
5 3
4 1

输出

33 5

输入

10 10
2 3
3 8
10 2
5 8
6 5
9 10
6 4
10 7
3 1
14 4 16 3 18 5 6 3 5 16
3 4
8 6
5 7
3 8
6 2
10 9
6 7
3 7
6 2
4 9

输出

174 37

数据范围

对于 30%30\% 的数据,满足 1N,M1001 \le N, M \le 1001Ci1001 \le C_i \le 100

对于 60%60\% 的数据,满足 1N,M10001 \le N, M \le 10001Ci10001 \le C_i \le 1000

对于 100%100\% 的数据,满足 1N,M1000001 \le N, M \le 1000001Ci1000001 \le C_i \le 1000001Xi,YiN1 \le X_i, Y_i \le NXiYiX_i \neq Y_i1Ui,ViN1 \le U_i, V_i \le NUiViU_i \neq V_i