poj1639——Picnic Planning

题意:有一群兄弟去野餐,可以自己开车到目的地,或者开车到A的家里,然后和A一起去目的地。但目的地的停车场不一定容得下,如果每个人都自己开车去的话。所以这对连接到Park的边数有个限制。求他们总路径的最小值。

思路:利用最小K度限制生成树。

步骤:1.先求出最小m度限制生成树:将所有与Park连接的边去掉,得到一个或多个连通分量,各自求其最小生成树。当求出一个最小生成树T时,挑其中一个与Park最近的点,作为T的根,并以他为起点,求T上其他点的father节点。

2.由1,求m+1度限制生成树:先做处理,求出best[]数组,即比如best[3]=2,即3到Park路径上的最大的边权由2及father[2]构成。之后,寻找一点x,使得g[source][x]-g[best[x]][father[bext[x]]]的和最小,并把边{best[x],father[best[x]]}去掉。

3.当为K度限制生成树时,停止。

注意点:注意更新过程中,Best()函数的书写。

详情请看IOI2004国家集训队论文,由汪汀所著。

你可能感兴趣的:(J#)