树上子链
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

给定一棵树 T ,树 T 上每个点都有一个权值。
定义一颗树的子链的大小为:这个子链上所有结点的权值和 。
请在树 T 中找出一条最大的子链并输出。

输入描述:

第一行输入一个
接下来一行包含n个数,对于每个数 ,表示 i 结点的权值。
接下来有n-1行,每一行包含两个数u,v(  , u != v),表示u与v之间有一条边。

输出描述:

仅包含一个数,表示我们所需要的答案。
示例1

输入

复制
5
2 -1 -1 -2 3
1 2
2 3
2 4
2 5

输出

复制
4

说明

样例中最大子链为1 -> 2 -> 5

备注:

一个结点,也可以称作一条链