华山论剑(没有上司的舞会)——树形dp

题目描述

一日,小策如往常一般打开了自己的传奇,刚上线不久,就收到了帮主的私信。原来帮派里要召开一次武功比拼,让他来邀请各帮派人员,因为有些侠客还是萌新,所以需要小策挨个选取战力高的侠客。

本帮派——华山,实行了师徒制,每位侠客都有自己的师傅,师傅也有自己的师傅,一直到本帮派帮主。

每位侠客都有自己的战力,因为本次比拼会在全区直播,大家肯定愿意看更加激烈的战斗,所以肯定是战力越高越好。

但是还有一个要求,当邀请了一位侠客的师傅的时候,便不能再邀请那位侠客了。

请你帮助小策来计算,邀请哪些侠客可以使武会的战力总和最大,求最大的战力总和。

注:并不是师傅的战力一定比徒弟高,也有“青出于蓝而胜于蓝”的情况,但是师徒关系是不变的。

为了便于计算,我们将每位侠客表上编号(1...n)。

输入格式

第一行是一个整数n,表示有n个侠客;(1<=n<=6000)

第2行到第(n+1)行,每行一个整数,第(i+1)行的整数表示第i号侠客的战力值r(-128<=r<=127)(这里你们可能会疑惑了,但是玩游戏怎么不会有个坑逼呢,拉低全员战力)

第(n+2)行到第(2n+1)行,每行输入一堆整数x,y,表示y是x的师傅

最后一行输入0,0

输出格式

输出一行一个整数代表最大的战力总和

样例

样例输入

3
52
42
36
1 3
3 2
0 0

样例输出

94

猜你喜欢

转载自www.cnblogs.com/Rubyonly233/p/12899489.html