CCA的子树
题号:NC217042
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定一棵 n 个点的带点权的有根树,根节点为 1 。
要选出两个节点,满足任意一个不是另一个的祖先节点,最大化以两个节点为根的子树的点权和 。
如果选不出两棵合法的子树,则输出“Error”。

输入描述:

第一行一个正整数 n 。
第二行 n 个整数,分别表示 n 个点的点权 。
接下来 n  - 1 行,每行两个正整数 u,v 表示 u 和 v 之间有一条连边 。

输出描述:

一个整数,表示最大的点权和
示例1

输入

复制
5
10 -5 5 6 7
1 2
1 3
2 4
2 5

输出

复制
13

备注:

n <= 2×10^5,点权的绝对值 <= 10^9