poj 3662 最短路+优先队列+二分法

来源:互联网 发布:微博手游直播软件 编辑:程序博客网 时间:2024/05/29 19:12

题目链接:http://poj.org/problem?id=3662

题目大意:一个无向图有n个点,p条边,边上有权值,现要把1和n连接起来,但最多提供k条边免费,花费取路径中其余的边中最大权值,求所需的最小花费。即要求选择若干条边构成顶点1到顶点n的一条路径, 使得路径上边权最大值(不包括免费边)最小.

思路:假设A是可行解,即路径上边权最大值为A,则该路径上边权大于A的边一定小于等于K条。

若A不是最优解,那么必然B<A,使得路径上边权大于B的边小于等于K。

于是我们可以二分答案,得到一个值X,将所有小于等于X的边变为0,大于X的边变为1。

做最短路,则1到N的距离就是所用权值大于X边的条数。如果小于等于K,则是一个可行解。