hdu 2962 最短路+二分
题意:最短路上有一条高度限制,给起点和最大高度,求满足高度最大情况下,最短路的距离
不明白为什么枚举所有高度就不对
#include<cstdio>
#include<cstring>
#include<algorithm>
const int maxint=;
int c[][][],dist[],H[];
using namespace std;
int n,line;
int i,j,k;
int st,ed,mid;
int t=;
int path[];
int visit[];
bool dijkstra()
{
bool s[];
for(int i=;i<=n;i++)
{
s[i]=;
if(c[st][i][]>=mid)
dist[i]=c[st][i][];
else dist[i]=maxint;
path[i]=st;
}
s[st]=;
for(int i=;i<n;i++)
{
int temp=maxint;
int u=st;
for(int j=;j<=n;j++)
if(!s[j]&&temp>dist[j]&&c[path[j]][j][]>=mid)
{
temp=dist[j];
u=j;
}
if(temp==maxint) break;
s[u]=;
if(u==ed) return true;
for(int j=;j<=n;j++)
if(!s[j]&&c[u][j][]!=maxint&&c[u][j][]>=mid)
if(dist[j]>dist[u]+c[u][j][])
{
dist[j]=dist[u]+c[u][j][];
path[j]=u;
}
}
return false;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("1.in","r",stdin);
#endif
while(scanf("%d%d",&n,&line)!=EOF&&n&&line)
{
int tot=;
memset(H,,sizeof(H));
H[]=;
if(t) printf("\n");
printf("Case %d:\n",++t);
for(i=;i<=n;i++)
for(j=;j<=n;j++)
{
c[i][j][]=(i==j?:maxint);
c[i][j][]=-;
}
for(i=;i<=line;i++)
{
int p,q,len,h;
scanf("%d%d%d%d",&q,&p,&h,&len);
if(h==-)
{
c[p][q][]=c[q][p][]=maxint;
c[p][q][]=c[q][p][]=len;
continue;
}
if(c[p][q][]<h)
{
c[p][q][]=c[q][p][]=h;
c[p][q][]=c[q][p][]=len;
}
}
int tall;
scanf("%d%d%d",&st,&ed,&tall);
/*if(st==ed)
{
printf("maximum height = %d\n",tall);
printf("length of shortest route = 0\n");
continue;
}*/
/*H[tot++]=tall;
sort(H,H+tot);
int ans=0;
bool flag=0;
for(i=tot-1;i>=0;i--)
{
if(H[i]>tall) continue;
mid=H[i];
if(dijkstra())
{
flag=1;
ans=dist[ed];
break;
}
}*/
int first=;
int ans;
mid=(first+tall)>>;
while(first<=tall)
{
if(dijkstra())
{
ans=dist[ed];
first=mid+;
}
else
tall=mid-;
mid=(first+tall)>>;
}
if(tall==) printf("cannot reach destination\n");
else
{
printf("maximum height = %d\n",tall);
printf("length of shortest route = %d\n",ans);
}
}
return ;
}
hdu 2962 最短路+二分的更多相关文章
- HDU - 2962 Trucking SPFA+二分
Trucking A certain local trucking company would like to transport some goods on a cargo truck from o ...
- Trucking(HDU 2962 最短路+二分搜索)
Trucking Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- ACM: HDU 2544 最短路-Dijkstra算法
HDU 2544最短路 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descrip ...
- UESTC 30 &&HDU 2544最短路【Floyd求解裸题】
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- POJ 3662 Telephone Lines【Dijkstra最短路+二分求解】
Telephone Lines Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7214 Accepted: 2638 D ...
- hdu 5521 最短路
Meeting Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- poj 2391 Ombrophobic Bovines 最短路 二分 最大流 拆点
题目链接 题意 有\(n\)个牛棚,每个牛棚初始有\(a_i\)头牛,最后能容纳\(b_i\)头牛.有\(m\)条道路,边权为走这段路所需花费的时间.问最少需要多少时间能让所有的牛都有牛棚可待? 思路 ...
- Luogu P1462 通往奥格瑞玛的道路(最短路+二分)
P1462 通往奥格瑞玛的道路 题面 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己 ...
- HDU - 2544最短路 (dijkstra算法)
HDU - 2544最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以 ...
随机推荐
- solr后台界面介绍——(十一)
1.加一个collection的方法 复制solr-home下的collection1,修改名字为collection2.并且修改collection2文件夹中配置文件core.properties中 ...
- 【Python】POST上传APK检测是否存在ZipperDown漏洞
前言 用POST的方式上传文件,检测APK是否存在ZipperDown漏洞. 代码 # authour:zzzhhh # 2018.08.08 # check ZipperDown # -*- cod ...
- my.cnf 详解与优化【转】
MySQL配置文件my.cnf 例子最详细翻译,可以保存做笔记用. #BEGIN CONFIG INFO#DESCR: 4GB RAM, 只使用InnoDB, ACID, 少量的连接, 队列负载大#T ...
- redis数据淘汰机制
volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用 的数据淘汰 volatile-ttl:从已设置过期时间的数据集(server.db[i ...
- HDU 6212 Zuma 2017青岛网络赛 区间DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6212 解法:看了眼题就发现这个BZOJ 1032不是一毛一样?但是BZOJ上那是个巨坑,数据有错,原来 ...
- 002_安装第三方APP好的站点及解除安全与隐私限制
一.解除安全与隐私限制的任何来源. http://bbs.feng.com/read-htm-tid-10714286.html 接下来,我们就打开终端,然后输入以下命令: sudo spctl ...
- BigDecimal常用方法
一.介绍 Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高精度计算. 其中 BigInteg ...
- linux tomcat 突然验证码出不来
情况描述 虚拟机上用tomcat部署的web应用,本来都还可以的.后来打了一个快照进行过压缩后,重新起虚拟机发现应用登录界面的验证码出不来了,具体报的是500错误. 参见http://www.blog ...
- new Function和eval区别
eval和new Function都可以动态解析和执行字符串.但是它们对解析内容的运行环境判定不同. eval中的代码执行时的作用域为当前作用域.它可以访问到函数中的局部变量. new Functio ...
- Git简明教程二、开始进行版本管理
上一篇介绍了Git中的一些基本概念.本篇来实际看一看如何通过几个常用命令来快速上手Git,完成版本管理的日常操作(核心操作). 0. 准备工作 安装Git后,请先在你的电脑上新建或选择一个目录作为测试 ...