1. 程式人生 > >[樹形DP] 猴腮雷 (沒有上司的舞會)

[樹形DP] 猴腮雷 (沒有上司的舞會)

題目描述 Description

新年就要來臨啦,小猴腮雷一家N人將作為嘉賓被邀請到了春晚上。然而小猴腮雷的一家都曾經是大名鼎鼎的熊孩子,無論在什麼時候都會,也只會和自己的直系親屬,也就是父母吵架,當然,即便是在春晚這個舞臺上也是這樣。為了到時候不會引起戰爭,組委會據此思考到底要邀請哪些人?更讓組委會頭疼是,每個猴腮雷擁有一個活潑值Ai,組委會既想要他們不會發生矛盾,也想盡量讓來參加的猴腮雷活潑值的和最大?

輸入 Input

第一行一個整數N
接下來N行,第i+1行表示 i號猴腮雷的活潑值Ai
接下來N1行,每行輸入一對整數L,K。表示KL是直接親屬關係。
最後一行輸入0

0

輸出 Output

一行整數表示最大的活潑值的和。

樣例輸出 Sample Input

7
1
1
1
1
1
1
1
1 3
2 3
6 4
7 4
4 5
3 5
0 0

樣例輸出 Sample Output

5

限制 Limits

對於70%的資料 1N1000
對於100%的資料 1N6000,128Ai127
Time Limits : 1s & Memory Limit : 128MB

經典樹形DP題,記dpx,

0/1為猴腮雷x不來/來的情況,根據這個就能推出DP方程了:

dpx,0=sonxmax{dpson,0,dpson,1}dpx,1=happyx+sonxdpson,0
答案是max{dp1,0,dp1,1}
時間複雜度O(n)
Code