bzoj#P3302. [Shoi2005] 树的双中心

[Shoi2005] 树的双中心

题目描述

给定一棵树 T=(V,E)T=(V,E),其中 VV 为节点集合,EE 为边集合,对于 VV 中的每个节点 vv,有一个权值函数 W(v)W(v),该函数的值均为正整数,记 d(u,v)d(u,v) 为节点 uuvv 之间的距离,表示他们之间唯一的一条路径的边数。若 uuvv 为同一个节点,则 d(u,v)=0d(u,v)=0。你的任务是找出两个不同的节点 x,yx,y,使得以下表达式 S(x,y)S(x,y) 最小:

$$S(x,y)=\sum\limits_{v\in V}(W(v)\times \min(d(x,v),d(y,v))). $$

输入格式

第一行为 nn,表示树的节点数目,树的节点从 11nn 编号。
接下来 n1n-1 行,每行两个整数 u,vu,v,表示 uuvv 之间有一条边。
再接下 nn 行,每行一个正整数,其中第 ii 行的正整数表示编号为 ii 的节点权值为 wiw_i

输出格式

将最小的 S(x,y)S(x,y) 输出,结果保证不超过 10910^9

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

样例说明 1

选取两个中心节点为 2,32,3

数据规模与约定

对于 100%100\% 的数据,1n5×1041\le n\le 5\times 10^4,保证树的深度 100\le 100