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 ...
随机推荐
- Java注释模板
/** * * 项目名称:${project_name} * 类名称:${type_name} * 类描述: * 创建人:${user} * 创建时间:${date} ${t ...
- css中文本框与按钮对不齐解决方案
我们先对对input标记设定样式,代码如下: html 代码 <form> <input type=”text” name=”text1” id=”text1” /> < ...
- 独立两套DJANGO+CELERY配置(生产+测试)时要注意的一些细节
1,生产的NGINX环境,要指定自己的目录,而不是PROJ默认的. upstream ism_host { server ; } server { listen ; server_name local ...
- win7安装IIS及将网站发布到IIS上
1. WIN7安装IIS: 控制面板----程序和功能-----打开或关闭windows功能,如图 展开Internet信息服务,按照下图方式进行选择,然后单击"确定",等待几分 ...
- [wikioi]合并果子
http://wikioi.com/problem/1063/ 这题是贪心+堆.主要想练习一下堆的写法.算法导论里的方法名是heapify()等,但大家经常用更直观的down(), up()方法(向上 ...
- VCL+FMX 双剑合壁编程
VCL 是经典,FMX 是新生,新生事物总会带来一些好玩新奇的东西.舍弃经典是浪费,不了解新生事物是等死,那么我们来一个二合一双剑合壁又如何呢? 要双剑合壁,就得投些机,取些巧.由于 Delphi / ...
- background image position问题
在CSS中,背景图片的定位方法有3种: 1)关键字:background-position: top left; 2)像素:background-position: 0px 0px; 3)百分比:ba ...
- Co-variant array conversion from x to y may cause run-time exception
http://stackoverflow.com/questions/8704332/co-variant-array-conversion-from-x-to-y-may-cause-run-tim ...
- c#反射重载方法(发现不明确的匹配)
GetMethod(string name) 在反射重载方法时,如果调用此重载方法,会产生 发现不明确的匹配 的错误. 解决方案如下: GetMethod("MethodName" ...
- vijosP1437简单的口令
描述暑假,简单闲着无聊,边想出了一个很奇怪的东西.......简单有很奇怪的方法来隐藏他的口令.他会选择一个字符串S(由L个小写字母组成,5<=L<=100,000),然后他把S顺时针绕成 ...