hdu1839之二分+邻接表+Dijkstra+队列优化
Delay Constrained Maximum Capacity Path
Time Limit: 10000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)
Total Submission(s): 544 Accepted Submission(s): 192
2 1 10
1 2 13 10
4 4 20
1 2 1000 15
2 4 999 6
1 3 100 15
3 4 99 4
99
题目:给m条管道,每条管道有可运输的最大容量和消耗的时间c,t
现在有东西要从1运输到n,必须在时间T内完成,求符合条件的可运输的最大容量
分析:对于所给的m条管道的最大容量,进行排序,然后二分容量求从1到n的最短时间即可
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<queue>
#include<algorithm>
#include<map>
#include<vector>
#include<iomanip>
#define INF 99999999
using namespace std; const int MAX=10000+10;
int s[MAX*5],n,m,t;
int size,head[MAX],dist[MAX];
bool mark[MAX];
typedef pair<int,int>mp; struct Edge{
int v,c,t,next;
Edge(){}
Edge(int &V,int &C,int &T,int NEXT):v(V),c(C),t(T),next(NEXT){}
}edge[MAX*5*2]; inline void Init(int num){
memset(head,-1,sizeof(int)*(num+2));
size=0;
} inline void InsertEdge(int u,int v,int &c,int &t){
edge[size]=Edge(v,c,t,head[u]);//头插法
head[u]=size++;
} inline bool Dijkstra(int s,int t,int c,int T){
for(int i=1;i<=n;++i)mark[i]=false,dist[i]=INF;
dist[s]=0,mark[s]=true;
priority_queue< mp,vector<mp>,greater<mp> >q;
mp oq;
q.push(mp(0,s));
while(!q.empty()){
oq=q.top();
q.pop();
if(oq.first>T)return false;
if(oq.second == t)return dist[t];//dist[t]<=T;
mark[oq.second]=true;
for(int i=head[oq.second];i != -1;i=edge[i].next){
int v=edge[i].v;
if(mark[v] || edge[i].c<c)continue;
if(oq.first+edge[i].t<dist[v]){
dist[v]=oq.first+edge[i].t;
q.push(mp(dist[v],v));
}
}
}
return false;//无法到达t
} int main(){
int num,u,v,c,T;
cin>>num;
while(num--){
scanf("%d%d%d",&n,&m,&t);
Init(n);
for(int i=0;i<m;++i){
scanf("%d%d%d%d",&u,&v,&c,&T);
InsertEdge(u,v,c,T);
InsertEdge(v,u,c,T);
s[i]=c;
}
sort(s,s+m);
int left=0,right=0,mid;
for(int i=1;i<m;++i)if(s[i] != s[i-1])s[++right]=s[i];
while(left<=right){
mid=left+right>>1;
if(Dijkstra(1,n,s[mid],t))left=mid+1;
else right=mid-1;
}
printf("%d\n",s[right]);
}
return 0;
}
hdu1839之二分+邻接表+Dijkstra+队列优化的更多相关文章
- POJ 1511 - Invitation Cards 邻接表 Dijkstra堆优化
昨天的题太水了,堆优化跑的不爽,今天换了一个题,1000000个点,1000000条边= = 试一试邻接表 写的过程中遇到了一些问题,由于习惯于把数据结构封装在 struct 里,结果 int [10 ...
- HDU 2544 最短路(floyd+bellman-ford+spfa+dijkstra队列优化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 题目大意:找点1到点n的最短路(无向图) 练一下最短路... dijkstra+队列优化: #i ...
- ACM/ICPC 之 数据结构-邻接表+DP+队列+拓扑排序(TSH OJ-旅行商TSP)
做这道题感觉异常激动,因为在下第一次接触拓扑排序啊= =,而且看了看解释,猛然发现此题可以用DP优化,然后一次A掉所有样例,整个人激动坏了,哇咔咔咔咔咔咔咔~ 咔咔~哎呀,笑岔了- -|| 旅行商(T ...
- USACO 2008 January Silver Telephone Lines /// 二分最短路 邻接表dijkstra oj22924
题目大意: 一共有N (1 ≤ N ≤ 1,000)个电线杆,有P P (1 ≤ P ≤ 10,000)对电线杆是可以连接的, 用几条线连接在一起的电线杆之间都可相互通信,现在想要使得电线杆1和电线杆 ...
- POJ-2387Til the Cows Come Home,最短路坑题,dijkstra+队列优化
Til the Cows Come Home Time Limit: 1000MS Memory Limit: 65536K http://poj.org/problem?id=238 ...
- 确定比赛名次(map+邻接表 邻接表 拓扑结构 队列+邻接表)
确定比赛名次 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submis ...
- POJ - 3037-Skiing(邻接表+Dijkstra)
Bessie and the rest of Farmer John's cows are taking a trip this winter to go skiing. One day Bessie ...
- bfs 邻接表(需要优化 可能会RE *【模板】)
//---基于邻接表的bfs #include <stdio.h> #include <string.h> #include <iostream> #include ...
- 08-图8 How Long Does It Take(25 分)邻接表和队列
Given the relations of all the activities of a project, you are supposed to find the earliest comple ...
随机推荐
- Objective-c开发中混合使用ARC
首选“Compile Sources”的位置: 选中工程->TARGETS->相应的target然后选中右侧的“Build Phases”,向下就找到“Compile Sources”了. ...
- 下拉框点链接js
$("#input_text").click(function(){ $("#input_fonts").show(); }); $("#input_ ...
- [HDOJ - 5282] Senior's String 【DP】
题目链接:BZOJ - 5282 题目分析 LCS 就是用经典的 O(n^2) DP 解决,f[i][j] 表示 x 串前 i 个字符与 y 串前 j 个字符的 LCS 长度. f[i][j] = m ...
- [cc150] 硬币问题
Given an infinite number of quarters (25 cents), dimes (10 cents), nickels (5 cents) and pennies (1 ...
- opencv for python 之 突出点检测
opencv下载地址:http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.3/OpenCV-2.4.3.exe/dow ...
- 如何避免远程循环执行SSH时,到第一条之后就退出
RT 今天遇到的小问题,记录下来. 据说关键是加 < /dev/null 我也是看网上别人说的,测试成功. #!/bin/bash while read line do echo $line ...
- android 开发adb server is out of date 解决方案
查看到底是哪个端口给占用了 输入红色部分命令 C:\Users\xxxxxx>netstat -ano | findstr "5037" TCP 127.0.0.1:5 ...
- Visual Studio 创建代码注释默认模版方法
在日常的开发中我们经常需要为页面添加注释和版权等信息,这样我们就需要每次去拷贝粘贴同样的文字,为了减少这种重复性的工作,我们可以把这些信息保存在Visual Studio 2012类库模版文件里 1. ...
- [codility]Array-closest-ascenders
http://codility.com/demo/take-sample-test/pi2012 又是一道单调栈的题目.首先这道题目n^2是最朴素的做法.继续优化,因为和顺序有关就不好排序.然后,看到 ...
- Spring 3.x企业应用开发实战(14)----事务
Spring虽然提供了灵活方便的事务管理功能,但这些功能都是基于底层数据库本身的事务处理机制工作的.要深入了解Spring的事务管理和配置,有必要先对数据库事务的基础知识进行学习. 何为数据库事务 “ ...