题目描述
给定一棵有 个结点的树,结点编号为 到 ,其中第 个结点有一个整数权值 (可以为负数)。
请选出若干个结点组成集合 ,要求 中任意两个结点都不相邻(即不存在一条边同时连接 中的两个结点),使得 最大。
允许一个结点都不选。此时 为空集,规定其权值和为 ,并且空集本身也满足「任意两点不相邻」的要求。
输入格式
第一行一个正整数 。
第二行 个整数 ,相邻两个整数之间用一个空格隔开。
接下来 行,每行两个整数 ,表示结点 与结点 之间有一条边。输入保证这些边构成一棵树。
输出格式
输出一行一个整数,表示满足要求的点集中最大的权值和。
样例
样例输入
5
-5 4 6 -2 3
1 2
1 3
3 4
3 5
样例输出
10
样例解释
这棵树以 为根时:结点 是 的儿子,结点 是 的儿子,结点 都是 的儿子。
| 选取的集合 | 是否合法 | 权值和 |
|---|---|---|
| 合法 | ||
| 合法 | ||
| 合法( 不相邻) | ||
| 合法 | ||
| 合法 | ||
| 不合法( 相邻) | — |
所有合法集合中权值和最大的是 ,答案为 。
数据范围
对于全部测试数据:
- ;
- ;
- ,且输入的 条边恰好构成一棵树。
注意:答案可能超过 位整数的表示范围。