1. 程式人生 > >#1055 : 刷油漆(樹上的動態規劃)

#1055 : 刷油漆(樹上的動態規劃)

描述

上回說到,小Ho有著一棵灰常好玩的樹玩具!這棵樹玩具是由N個小球和N-1根木棍拼湊而成,這N個小球都被小Ho標上了不同的數字,並且這些數字都是處於1..N的範圍之內,每根木棍都連線著兩個不同的小球,並且保證任意兩個小球間都不存在兩條不同的路徑可以互相到達。沒錯,這次說的還是這棵樹玩具的故事!

小Ho的樹玩具的質量似乎不是很好,短短玩了幾個星期,便掉漆了!

“簡直是一場噩夢!”小Ho拿著樹玩具眼含熱淚道。

“這有什麼好憂傷的,自己買點油漆刷一刷不就行了?”小Hi表示不能理解。

“還可以這樣?”小Ho頓時興高采烈了起來,立馬跑出去買回來了油漆,但是小Ho身上的錢卻不夠——於是他只買回了有限的油漆,這些油漆最多能給M個結點塗上顏色,這就意味著小Ho不能夠將他心愛的樹玩具中的每一個結點都塗上油漆!

小Ho低頭思索了半天——他既不想只選一部分結點補漆,也不想找小Hi借錢,但是很快,他想出了一個非常棒的主意:將包含1號結點的一部分連通的結點進行塗漆(這裡的連通指的是這一些塗漆的結點可以互相到達並且不會經過沒有塗漆的結點),然後將剩下的結點拆掉!

那麼究竟選擇哪些結點進行塗漆呢?小Ho想了想給每個結點都評上了分——他希望最後留下來,也就是塗漆了的那些結點的評分之和可以儘可能的高!

那麼,小Ho該如何做呢?

輸入

每個測試點(輸入檔案)有且僅有一組測試資料。

每組測試資料的第一行為兩個整數N、M,意義如前文所述。

每組測試資料的第二行為N個整數,其中第i個整數Vi表示標號為i的結點的評分

每組測試資料的第3~N+1行,每行分別描述一根木棍,其中第i+1行為兩個整數Ai,Bi,表示第i根木棍連線的兩個小球的編號。

對於100%的資料,滿足N<=10^2,1<=Ai<=N, 1<=Bi<=N, 1<=Vi<=10^3, 1<=M<=N

小Hi的Tip:那些用陣列儲存樹邊的記得要開兩倍大小哦!

輸出

對於每組測試資料,輸出一個整數Ans,表示使得塗漆結點的評分之和最高可能是多少。

樣例輸入