题目大意:
有一个公园,最多只能允许有K条路通向公园,问在这个限制条件下,所能形成的最小生成树。
资料:
IOI2004国家集训队论文--王汀《最小生成树问题的扩展》
http://wenku.baidu.com/view/41800d66ddccda38376bafac.html
度限制最小生成树的算法的关键是动态规划来实现更新每一个点到根节点的最大边。(具体实现见代码)
/*
ID: wuqi9395@126.com
PROG:
LANG: C++
度限制最小的生成树:
1. 去掉根节点,生成一个森林。
2. 将每个子树分别于根节点相连(取最小的边)。生成一个m度最小生成树
3. 迭代(k - m)次,每次连接一条没用过的与根节点相连的边,形成一个环,去掉其中不与根节点相连的边
在更新每一个点到根节点的最大值时,可以采用动态规划的算法 mx[v] = max(mx[pre[v]], edge[v][pre[v]])
复杂度 O(VlogV + k * n)
*/
#include