题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=27087

思路:题目的意思是求S->T的所有路径中花费总和小于给定的P值的所经过的路径上的最大权值。我们可以从起点做一次SPFA,然后求出起点到所有点的最短路径,然后以终点为起点,将边反向,求终点到起点的最短路,然后枚举每一条边即可,求最大值。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
#define MAXN 22222
#define MAXM 222222
#define inf 1<<30
#define FILL(a,b) memset(a,b,sizeof(a)) template<class T>inline T Get_Min(const T &a,const T &b){ return a<b?a:b; }
template<class T>inline T Get_Max(const T &a,const T &b){ return a>b?a:b; }
struct Edge{
int v,w,next;
}edge1[MAXM],edge2[MAXM]; int n,m,st,ed,p,NE1,NE2;
int head1[MAXN],head2[MAXN]; void Insert1(int u,int v,int w)
{
edge1[NE1].v=v;
edge1[NE1].w=w;
edge1[NE1].next=head1[u];
head1[u]=NE1++;
} void Insert2(int u,int v,int w)
{
edge2[NE2].v=v;
edge2[NE2].w=w;
edge2[NE2].next=head2[u];
head2[u]=NE2++;
} int dist[][MAXN];
bool mark[MAXN];
void spfa(int st,int ed,Edge *edge,int *dist,int *head)
{
FILL(mark,false);
fill(dist,dist+n+,inf);
queue<int>que;
que.push(st);
dist[st]=;
while(!que.empty()){
int u=que.front();
que.pop();
mark[u]=false;
for(int i=head[u];i!=-;i=edge[i].next){
int v=edge[i].v,w=edge[i].w;
if(dist[u]+w<dist[v]){
dist[v]=dist[u]+w;
if(!mark[v]){
mark[v]=true;
que.push(v);
}
}
}
}
} int main()
{
int _case,u,v,w,ans,t=;
scanf("%d",&_case);
while(_case--){
scanf("%d%d%d%d%d",&n,&m,&st,&ed,&p);
NE1=NE2=;
FILL(head1,-);
FILL(head2,-);
while(m--){
scanf("%d%d%d",&u,&v,&w);
Insert1(u,v,w);
Insert2(v,u,w);
}
spfa(st,ed,edge1,dist[],head1);
spfa(ed,st,edge2,dist[],head2);
ans=-;
for(int u=;u<=n;u++){
for(int i=head1[u];i!=-;i=edge1[i].next){
int v=edge1[i].v,w=edge1[i].w;
if(dist[][u]!=inf&&dist[][v]!=inf&&dist[][u]+w+dist[][v]<=p){
ans=Get_Max(ans,w);
}
}
}
printf("Case %d: %d\n",t++,ans);
}
return ;
}

loj 1379(最短路变形)的更多相关文章

  1. POJ-2253.Frogger.(求每条路径中最大值的最小值,最短路变形)

    做到了这个题,感觉网上的博客是真的水,只有kuangbin大神一句话就点醒了我,所以我写这篇博客是为了让最短路的入门者尽快脱坑...... 本题思路:本题是最短路的变形,要求出最短路中的最大跳跃距离, ...

  2. POJ 3635 - Full Tank? - [最短路变形][手写二叉堆优化Dijkstra][配对堆优化Dijkstra]

    题目链接:http://poj.org/problem?id=3635 题意题解等均参考:POJ 3635 - Full Tank? - [最短路变形][优先队列优化Dijkstra]. 一些口胡: ...

  3. POJ 3635 - Full Tank? - [最短路变形][优先队列优化Dijkstra]

    题目链接:http://poj.org/problem?id=3635 Description After going through the receipts from your car trip ...

  4. POJ-1797Heavy Transportation,最短路变形,用dijkstra稍加修改就可以了;

    Heavy Transportation Time Limit: 3000MS   Memory Limit: 30000K          Description Background  Hugo ...

  5. HDOJ find the safest road 1596【最短路变形】

    find the safest road Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  6. HN0I2000最优乘车 (最短路变形)

    HN0I2000最优乘车 (最短路变形) 版权声明:本篇随笔版权归作者YJSheep(www.cnblogs.com/yangyaojia)所有,转载请保留原地址! [试题]为了简化城市公共汽车收费系 ...

  7. 天梯杯 PAT L2-001. 紧急救援 最短路变形

    作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上.当其他城市有紧急求 ...

  8. Heavy Transportation POJ 1797 最短路变形

    Heavy Transportation POJ 1797 最短路变形 题意 原题链接 题意大体就是说在一个地图上,有n个城市,编号从1 2 3 ... n,m条路,每条路都有相应的承重能力,然后让你 ...

  9. POJ 2253 Frogger ( 最短路变形 || 最小生成树 )

    题意 : 给出二维平面上 N 个点,前两个点为起点和终点,问你从起点到终点的所有路径中拥有最短两点间距是多少. 分析 : ① 考虑最小生成树中 Kruskal 算法,在建树的过程中贪心的从最小的边一个 ...

随机推荐

  1. 流程图制作在云上 https://www.processon.com/

    流程图制作在云上 : https://www.processon.com/

  2. Kafka集群环境搭建

    Kafka是一个分布式.可分区.可复制的消息系统.Kafka将消息以topic为单位进行归纳:Kafka发布消息的程序称为producer,也叫生产者:Kafka预订topics并消费消息的程序称为c ...

  3. Effective C++ -----条款12: 复制对象时勿忘其每一个成分

    Copying函数应该确保复制“对象内的所有成员变量”及“所有base class成分”. 不要尝试以某个copying函数实现另一个copying函数.应该将共同机能放进第三个函数中,并由两个cop ...

  4. 【leetcode】Word Search II(hard)★

    Given a 2D board and a list of words from the dictionary, find all words in the board. Each word mus ...

  5. 【leetcode】 Search a 2D Matrix (easy)

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...

  6. HTML标记之Form表单

    一.表单的作用 从访问的Web站点的用户那里获得信息.访问者可以使用诸如文本域.列表框.复选框以及单选按钮之类的表单元素输入信息,然后单击某个按钮提交这些信息.是客户端与服务器端的交流途径. 二.说明 ...

  7. iOS中的两种主要架构及其优缺点浅析

    凡是程序的开发者,应该对程序的架构都不陌生.一个程序的架构的好坏对这个程序有着非常重要的作用.今天我们来看一下iOS开发中用要的两种主流的程序架构.这个过程中我们主要以例子的形式展开. 我们来看第一种 ...

  8. Java中常见数据结构:list与map -底层如何实现

    1:集合 2 Collection(单列集合) 3 List(有序,可重复) 4 ArrayList 5 底层数据结构是数组,查询快,增删慢 6 线程不安全,效率高 7 Vector 8 底层数据结构 ...

  9. EF – 7.一对多关联

    5.6.8 <一对多关联(上)> 5.6.9 <一对多关联(下)> 一对多的关联,可以说是整个数据库应用程序中最常见的一种关联类型了,因此,必须高度重视这种关联类型CRUD的实 ...

  10. 与你相遇好幸运,Sail.js定义其他主键

    uuid : { type: 'string', unique: true, required: true, primaryKey: true },