最小樹形圖

裸題意:

給你一個圖,每條邊有一個花費,指定一個點爲根,要求選其中若干條邊構成一棵合法的樹,且花費最少,求最小花費。

與最小生成樹的區別:最小生成樹是要最大的邊權最小,最小樹形圖是要邊權和最小。

朱劉算法:

最小樹形圖一般用朱劉算法。

朱劉算法是由兩個中國人提出,一個姓朱,一個姓劉,所以叫朱劉算法。

———————————我是分界線,下面正文———————————–

首先要認識到,這個最小花費一定不小於每個點的k 的和(假設k 是與這個點相連的邊中花費最小的邊的花費),所以直接選邊權最小的邊有可能就是最小樹形圖。

如圖:

最小樹形圖(1)

邊上的黑色數字是花費,點上的紅色數字就是k 啦。

所以就先貪心先選好每個點的最小花費的邊,然後把這條邊的花費累加到ans

但是這樣有一個問題:可能有環。

如上圖選完邊之後的效果:

最小樹形圖(2)

然而出現了兩個環,沒有構成一棵樹,怎麼辦?

有環就把環縮成點咯。

縮點之後就要把原來環裏面的點的連向環外的點的邊重新連回去。

不過由於環內每個點已經累加一次邊值了,所以要把每個點連出去的邊的花費都減k

效果如圖:

最小樹形圖(3)

(紅邊是選了的)

然後接着每個沒選邊的點接着選邊,接着縮點,直到沒有出現環時就是一棵樹。

這棵樹就是最小樹形圖。

例題:POJ3164(裸題)、HDU2121題解戳這

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章