裁枝剪叶
Description
N个点用N-1条无向边接成一个连通图(这种结构叫做“无根树”)。
这个图的性质是:任何两个点之间有且只有一条包含最少边的路径。
现在给每个点加一个值。
所谓“裁枝剪叶”,就是说:去掉图中的一条边,这样图就被分成了两棵无根树,丢掉其中的一棵。
经过一系列“裁枝剪叶”之后,还剩下一棵无根树。
本题的任务就是:通过一系列“裁枝剪叶(也可以什么裁剪都不进行),使剩下的无根树上的点的值的和最大。
Format
Input
第一行一个整数N(1 <= N <= 16000)。
第二行N个整数,第i个整数表示第i个点上的值。
接下来N-1行每行两个整数a,b,表示存在一条边连接着a号点和b号点。
Output
一个数,表示一系列“裁枝剪叶”之后所能得到的值之和的最大值。保证绝对值不超过2147483647
Samples
输入数据 1
7
-1 -1 -1 1 1 1 0
1 4
2 5
3 6
4 7
5 7
6 7
输出数据 1
3
请发代码