#P3068. 小白树

小白树

题目描述

背景

小白家门前有一颗小白树,树上的每个节点 uu 都有一个权值 W(u)W(u)。小白树的奇特之处在于树上有两个不同的中心点 xxyy。这两个中心点满足 F(x,y)=min(Dis(u,x),Dis(u,y))W(u)F(x,y)=\sum \min(Dis(u,x),Dis(u,y))*W(u) 最小,其中 DisDis 表示两个节点的距离。通俗地讲,对于每个节点 uu,求出 G(u)G(u) 表示它到 xx 的距离和到 yy 的距离中间小的那个乘以它的权值。那么所有 G(u)G(u) 的和就是 F(x,y)F(x,y)

现在小白想让你找出这两个中心点。你只需要输出 F(x,y)F(x,y) 就可以了。

输入格式

第一行有一个整数 NN (2N5000002 \le N \le 500000),NN 表示小白树的节点个数。 接下来 N1N-1 行,每行有两个整数 aabb,表示 aabb 之间有一条边。 接下来 NN 行,每行有一个整数,第 ii 个整数表示 W(i)W(i) (0W100000 \le W \le 10000)。

输出格式

一个整数表示 F(x,y)F(x,y)

输入样例

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

输出样例

14

提示

总共10个测试点 2n5000002 \le n \le 500000, 0w100000 \le w \le 10000

题目来源

By Martin