QQ宠物
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小明有一只29级的QQ宠物,他决定在宠物社区里帮助自己的宠物讨好一些NPC获得一定的好感度,小明当然想让自己的宠物获得最大的好感度啦,但他并不能同时讨好两个直接认识的NPC,好消息是只有n-1NPC直接认识,并且将所有相互认识的NPC连在一起能形成一个树形的结构图。

这时候小红发现了小明的所作所为,QQ宠物只有16级的小红十分看不惯小明的这种行为,于是他又介绍了k对互相不直接认识的NPC互相认识。这下小明大感头疼,随即想出一个妙计,他趁这新认识的kNPC关系尚未牢固又挑拨了其中k-1NPC的关系,也就是说当前只有nNPC互相认识。

但小明还是很头疼,他想知道他通过讨好NPC能获得的最大好感度到底是多少,于是找到了聪明的你,你能帮忙解答一下么?

输入描述:

第一行一个整数n代表社区中NPC的个数。为方便起见这n个NPC由1~N编号。

第二行n个正整数,表示讨好每个NPC能获得的好感度wi(wi≤10000)。

下面n行,每行2个整数x,y,表示x号,y号NPC直接认识。

输出描述:

输出包含一个整数为小明所能为他的宠物争取到的所有好感度之和,求这个和最大是多少

示例1

输入

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

输出

复制
6

备注:

【数据范围与约定】

对于100%的数据,n≤100,000保证x,y≤n。