【USACO 2008 January Silver】架设电话线 二分答案+最短路
来源:互联网 发布:北京电信网络 编辑:程序博客网 时间:2024/05/22 12:59
这道题其实跟以前做的求所有到终点的路径的最大边的最小值很像,那个问题是用二分来解的,而这道题,无非是增加了一个k条边免费的一个限制。依旧可以使用二分答案的方法解决,在判定是否可行时,只需要判断是否能寻找到一条路径,使得该路径上大于我们二分的这个值的边不超过k条,实质上就是最短路做的一个变形而已,小于二分的值的边可以看做边权为0,大于的可以看做边权为1,直接求最短路看是否小于k即可
#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<queue>#define MAX 1009#define inf 1011111111using namespace std;int n,i,m,k;struct wbysr{int to,value;};vector<wbysr>e[MAX];bool check(int x){queue<int>q;int done[MAX]={0},dis[MAX];for(int i=2;i<=n;i++)dis[i]=inf;dis[1]=0;done[1]=1;q.push(1);while(!q.empty()){int now=q.front();q.pop();done[now]=0;for(int j=0;j<e[now].size();j++){if(dis[e[now][j].to]>dis[now]+bool(e[now][j].value>x)){dis[e[now][j].to]=dis[now]+bool(e[now][j].value>x);if(!done[e[now][j].to]){done[e[now][j].to]=1;q.push(e[now][j].to);}}}}return dis[n]<=k;}int main(){scanf("%d%d%d",&n,&m,&k);for(int i=1;i<=m;i++){int a1,a2,a3;scanf("%d%d%d",&a1,&a2,&a3);e[a1].push_back((wbysr){a2,a3});e[a2].push_back((wbysr){a1,a3});}int l=0,r=inf,ans=inf;while(l<=r){int mid=(l+r)/2;if(check(mid)){ans=min(ans,mid);r=mid-1;}elsel=mid+1;}if(ans==inf)printf("-1\n");elseprintf("%d\n",ans);return 0;}
0 0
- 【USACO 2008 January Silver】架设电话线 二分答案+最短路
- 【二分\最短路】架设电话线
- usaco 2008 January Telephone Lines 架设电话线 题解
- BZOJ 1614: [Usaco2007 Jan]Telephone Lines架设电话线 二分答案 最短路
- 【二分答案+spfa】架设电话线
- *【bzoj 1614】Telephone Lines架设电话线(二分+最短路)
- USACO Jan08 (COGS 174) 架设电话线 二分答案,缩点,BFS判断可行性
- bzoj 1614: [Usaco2007 Jan]Telephone Lines架设电话线 二分+最短路
- [USACO Jan08] 架设电话线
- 最短路 + 二分答案
- 【二分答案&&最短路】URAL
- USACO 2012 January Contest, Silver Division Solution
- 【poj3264】Balanced Lineup 【USACO 2007 January Silver】
- bzoj1614 [Usaco2007 Jan]Telephone Lines架设电话线(spfa+二分答案)
- Poj2638 网络流+最短路+二分答案
- hdu 2962(二分答案+最短路)
- [USACO Jan08][BZOJ 1614][COGS 147]架设电话线
- SPFA+二分-BZOJ-1614-[Usaco2007 Jan]Telephone Lines架设电话线
- 第5章 指针、数组和结构
- C#Tuple的用法
- 未分类--Windows API--CreateProfile
- MFC修改button的颜色、背景、边框、对话框标题
- Leetcode: Count and Say
- 【USACO 2008 January Silver】架设电话线 二分答案+最短路
- listview的item为RelativeLayout时android:layout_alignParentBottom无效的解决方法
- How to Use Memcached With Ruby on Rails on Ubuntu 12.04 LTS
- 排序算法要点
- kerl
- videolectures 最受欢迎的机器学习视频
- 循环移位方法返回字符串类型
- Java如何将图片打包到jar中的问题
- 信息可视化数量分级图(Choropleth Map)示例