hdu 1839 Delay Constrained Maximum Capacity Path
来源:互联网 发布:淘宝号一天可以刷几单 编辑:程序博客网 时间:2024/06/16 05:36
将所有路径上的capacity保存下来,并进行二分查找,每次枚举一个capacity值,选路径是去掉capacity小于枚举值的边,判断是否存在小于等于时间t的最短路径
若存在,则枚举值满足条件,继续寻找比枚举值大的,否则,寻找比枚举值小的
只能用spfa,迪杰斯特拉超时
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std;
#define i64 long long
int n,m,t;
int cap[50005];
struct Edge
{
int to;
int w;
i64 c;
int next;
}edge[100005];
int head[10005];
bool visit[10005];
int dis[10005];
i64 ans ;
const int inf = 0x7fffffff;
bool dijkstra(i64 len)
{
for(int i = 1;i<=n;i++)
{
visit[i] = false;
dis[i] = inf;
}
dis[1] = 0;
visit[1] = true;
queue <int> q;
q.push(1);
while(!q.empty())
{
int temp = q.front();
q.pop();
for(int i = head[temp];i!=0;i=edge[i].next)
{
int to = edge[i].to;
int w = edge[i].w;
int c = edge[i].c;
if(c>=len&&dis[to]>dis[temp]+w)
{
dis[to] = dis[temp]+w;
if(!visit[to]) {q.push(to);visit[to] = true;}
}
}
visit[temp] = false;
}
if(dis[n]<=t)
return true;
return false;
}
void solve(int s,int e)
{
while(s<=e)
{
int mid = (s+e)/2;
if(dijkstra(cap[mid])) {
s = mid+1;
ans = cap[mid];
}
else e = mid-1;
}
}
void init()
{
for(int i = 0;i<=n;i++)
{
head[i] = 0;
}
}
int main()
{
int x,u,v,w;
i64 c;
scanf("%d",&x);
while(x--)
{
scanf("%d %d %d",&n,&m,&t);
init();
ans = 0;
for(int i = 1;i<=2*m;i++)
{
scanf("%d %d %I64d %d",&u,&v,&c,&w);
edge[i].to = v;
edge[i].c = c;
edge[i].w = w;
edge[i].next = head[u];
head[u] = i;
i++;
edge[i].to = u;
edge[i].c = c;
edge[i].w = w;
edge[i].next = head[v];
head[v] = i;
cap[i/2] =c;
}
sort(cap,cap+m+1);
solve(1,m);
printf("%I64d\n",ans);
}
return 0;
}
- hdu 1839 Delay Constrained Maximum Capacity Path
- hdu 1839 Delay Constrained Maximum Capacity Path
- hdu 1839:Delay Constrained Maximum Capacity Path
- HDU 1839 Delay Constrained Maximum Capacity Path
- HDU 1839 Delay Constrained Maximum Capacity Path
- HDU 1839 Delay Constrained Maximum Capacity Path
- HDU-1839-Delay Constrained Maximum Capacity Path
- Delay Constrained Maximum Capacity Path HDU
- Delay Constrained Maximum Capacity Path HDU
- HDU 1839 Delay Constrained Maximum Capacity Path(二分+最短路)
- HDU-1839 Delay Constrained Maximum Capacity Path 最短路
- HDU-1839 Delay Constrained Maximum Capacity Path 最短路+二分
- HDU 1839 Delay Constrained Maximum Capacity Path 最短路+二分
- 【HDU】1839 Delay Constrained Maximum Capacity Path 二分+最短路
- hdu 1839 Delay Constrained Maximum Capacity Path 二分+ spfa
- HDU 1839 Delay Constrained Maximum Capacity Path 最短路+二分
- HDU 1839 Delay Constrained Maximum Capacity Path(最短路+二分)
- HDU 1839 Delay Constrained Maximum Capacity Path(二分+SPFA)
- C++文件操作
- 代码的坏味道之十三 :Speculative Generality(夸夸其谈未来性)
- UVa 10739 - String to Palindrome 字符串dp
- 遭遇”慢连接”DOS攻击小记
- QQ2013 协议分析
- hdu 1839 Delay Constrained Maximum Capacity Path
- 超棒的悬浮层式的页面元素注解jQuery插件 - Chardin.js
- 对象参数深入分析jQuery.prototype.init选择器源码 Strut2教程-java教程
- socket 实现即时通信
- VC运行时库
- 找新朋友(公约数系列问题)
- 李易:再谈中国互联网三座大山
- QQ2013协议分析(解密篇)
- csapp2e 家庭作业 2.91