題目大意:
有一個公園,最多只能允許有K條路通向公園,問在這個限制條件下,所能形成的最小生成樹。
資料:
IOI2004國家集訓隊論文--王汀《最小生成樹問題的擴展》
http://wenku.baidu.com/view/41800d66ddccda38376bafac.html
度限制最小生成樹的算法的關鍵是動態規劃來實現更新每一個點到根節點的最大邊。(具體實現見代碼)
/*
ID: [email protected]
PROG:
LANG: C++
度限制最小的生成樹:
1. 去掉根節點,生成一個森林。
2. 將每個子樹分別於根節點相連(取最小的邊)。生成一個m度最小生成樹
3. 迭代(k - m)次,每次連接一條沒用過的與根節點相連的邊,形成一個環,去掉其中不與根節點相連的邊
在更新每一個點到根節點的最大值時,可以采用動態規劃的算法 mx[v] = max(mx[pre[v]], edge[v][pre[v]])
復雜度 O(VlogV + k * n)
*/
#include