#CSP1127. 距离 (distance)

距离 (distance)

题目描述

小 Z 和 小 Y 收到了一颗漂亮的树,由 nn 个节点构成,编号 1,2,,n1,2,\cdots,n ,其中 11 号节点是树的根。

我们称节点 uu 是节点 vv 的祖先,当且仅当 uuvv 到根的路径上(注意这里每个节点都是自己的祖先)。

我们定义 subtreeusubtree_u 表示 uu 的子树里的点集,也就是所有以 uu 为祖先的节点集。

现在小 Z 给了每个节点 ii 一个权值 aia_i ,小 Y 给了每个节点 ii 一个权值 bib_i

我们定义一个节点 uu 的价值为

$$ans_u=\sum_{x\in subtree_u}\sum_{y\in subtree_u} \min\{|a_x-a_y|,|b_x-b_y|\} \mod 10^9+7 $$

请你对每个节点 uu 求出其价值 ansuans_u

输入格式

distance.in 文件读入数据。

第一行一个整数,代表树上的节点个数 nn

接下来 n1n-1 行,每行两个整数 ui,vi(1ui,vin,uivi)u_i, v_i (1\le u_i,v_i\le n, u_i \neq v_i) ,代表树上的一条边连接节点 uiu_i 和节点 viv_i 。保证输入的所有边构成了一棵树。

接下来 nn 行,每行两个整数 ai,bia_i,b_i ,代表第 ii 个节点的两个权值。

输出格式

输出到 distance.out 文件。

nn 行,第 ii 行一个整数,表示 ansians_i

样例

5
1 2
1 3
2 4
2 5
9 5
2 8
7 1
4 3
6 6
44
12
0
0
0

样例 2

点击链接 ex_distance2.inex_distance2.out 下载大样例 2 的输入数据和输出数据。

数据范围

对于 20%20\% 的测试点,保证 1n10,1ai,bi1091\le n\le 10,1\le a_i,b_i\le 10^9

对于另外 20%20\% 的测试点,保证 1n100,1ai,bi1091\le n\le 100,1\le a_i,b_i\le 10^9

对于另外 30%30\% 的测试点,保证 1n5000,1ai,bi1091\le n\le 5000,1\le a_i,b_i\le 10^9

对于剩下 30%30\% 的测试点,保证 1n5×105,1ai,bi1091\le n\le 5\times 10^5,1\le a_i,b_i\le 10^9