UVA 11374 Airport Express (最短路)
题目只有一条路径会发生改变。
常见的思路,预处理出S和T的两个单源最短路,然后枚举商业线,商业线两端一定是选择到s和t的最短路。
路径输出可以在求最短路的同时保存pa数组得到一棵最短路树,也可以用dist数组检查。
#include<bits/stdc++.h>
using namespace std;
const int maxn = , maxm = ; int head[maxn], to[maxm], nxt[maxm],wei[maxm],ecnt; void addEdge(int u,int v,int w)
{
to[ecnt] = v;
nxt[ecnt] = head[u];
wei[ecnt] = w;
head[u] = ecnt++;
} typedef pair<int,int> Node;
#define fi first
#define se second
const int INF = 0x3f3f3f3f;
int d1[maxn],d2[maxn]; void dijkstra(int s,int t,int (&d)[maxn])
{
priority_queue<Node,vector<Node>,greater<Node> > q;
memset(d,0x3f,sizeof(d));
d[s] = ; q.push(Node(,s));
while(q.size()){
Node x = q.top(); q.pop();
int u = x.se;
if(x.fi != d[u]) continue;
for(int i = head[u]; ~i; i = nxt[i]){
int v = to[i];
if(d[v] > d[u]+wei[i]){
d[v] = d[u]+wei[i];
q.push(Node(d[v],v));
}
}
}
} int main()
{
//freopen("in.txt","r",stdin);
int N,S,E;
bool first = true;
while(~scanf("%d%d%d",&N,&S,&E)){
if(!first) putchar('\n');
first = false;
int M; scanf("%d",&M);
memset(head,-,sizeof(head));
ecnt = ;
while(M--){
int u,v,w; scanf("%d%d%d",&u,&v,&w);
addEdge(--u,--v,w); addEdge(v,u,w);
}
dijkstra(--S,--E,d1);
dijkstra(E,S,d2); int pick = -, p2, ans = d1[E];
int K; scanf("%d",&K);
for(int i = ; i < K; i++){
int u,v,w; scanf("%d%d%d",&u,&v,&w);
if(d1[--u] + w < ans - d2[--v]){
ans = d1[u] + w + d2[v];
pick = u; p2 = v;
}else if( d2[u] + w < ans - d1[v]){
ans = d2[u] + w + d1[v];
pick = v; p2 = u;
}
}
int u;
if(~pick){
stack<int> stk;
u = pick;
stk.push(u);
while(u != S){
for(int i = head[u]; ~i; i = nxt[i]){
if(d1[u] - wei[i] == d1[to[i]] ){
u = to[i]; stk.push(u); break;
}
}
}
while(stk.size()){
printf("%d ",stk.top()+); stk.pop();
}
u = p2;
}else {
u = S;
}
while(u != E){
printf("%d ",u+);
for(int i = head[u]; ~i; i = nxt[i]){
if(d2[u] - wei[i] == d2[to[i]] ){
u = to[i]; break;
}
}
}
printf("%d\n",E+);
if(~pick) printf("%d\n",pick+);
else puts("Ticket Not Used");
printf("%d\n",ans);
}
return ;
}
UVA 11374 Airport Express (最短路)的更多相关文章
- UVA - 11374 - Airport Express(堆优化Dijkstra)
Problem UVA - 11374 - Airport Express Time Limit: 1000 mSec Problem Description In a small city c ...
- UVA - 11374 Airport Express (Dijkstra模板+枚举)
Description Problem D: Airport Express In a small city called Iokh, a train service, Airport-Express ...
- UVA 11374 Airport Express SPFA||dijkstra
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- UVA 11374 Airport Express(最短路)
最短路. 把题目抽象一下:已知一张图,边上的权值表示长度.现在又有一些边,只能从其中选一条加入原图,使起点->终点的距离最小. 当加上一条边a->b,如果这条边更新了最短路,那么起点st- ...
- UVA 11374 Airport Express 机场快线(单源最短路,dijkstra,变形)
题意: 给一幅图,要从s点要到e点,图中有两种无向边分别在两个集合中,第一个集合是可以无限次使用的,第二个集合中的边只能挑1条.问如何使距离最短?输出路径,用了第二个集合中的哪条边,最短距离. 思路: ...
- UVA 11374 Airport Express(枚举+最短路)
枚举每条商业线<a, b>,设d[i]为起始点到每点的最短路,g[i]为终点到每点的最短路,ans便是min{d[a] + t[a, b] + g[b]}.注意下判断是否需要经过商业线.输 ...
- UVa 11374 - Airport Express ( dijkstra预处理 )
起点和终点各做一次单源最短路, d1[i], d2[i]分别代表起点到i点的最短路和终点到i点的最短路,枚举商业线车票cost(a, b); ans = min( d1[a] + cost(a, b ...
- 【uva11374】Airport Express 最短路
题意: 在Iokh市中,机场快线是市民从市内去机场的首选交通工具.机场快线分为经济线和商业线两种,线路,速度和价钱都不同.你有一张商业线车票,可以坐一站商业线,而其他时候只能乘坐经济线.假设换乘时间忽 ...
- uva 11374 最短路+记录路径 dijkstra最短路模板
UVA - 11374 Airport Express Time Limit:1000MS Memory Limit:Unknown 64bit IO Format:%lld & %l ...
随机推荐
- Win10 VC++运行库集合|VC++ 2005 2008 2010 2012 2015
在Win10系统中很多朋友在运行一些软件时会遇到缺少.DLL的情况,主要是没有安装VC++运行库下面小编收集了Win10 VC++运行库集合,大家安装上去就可以了~ 微软常用软件运行库合集(vc201 ...
- Jmeter之HTTP request
1.下载Jmeter http://jmeter.apache.org/download_jmeter.cgi 2.解压,在bin目录下找到jmeter.bat,并双击打开. 3.添加线程组 4.添加 ...
- 6 手写Java LinkedHashMap 核心源码
概述 LinkedHashMap是Java中常用的数据结构之一,安卓中的LruCache缓存,底层使用的就是LinkedHashMap,LRU(Least Recently Used)算法,即最近最少 ...
- TP5之上传多张图片
1.效果图(每点击一次‘添加选项’,就会有一个新的 file 框来添加新的图片) 2.view <!--不要忘了引入jquery文件--> <!-- post传值方式和文件传输协议一 ...
- vc编程中出现 fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?
解决办法菜单--〉项目--〉设置,出现“项目设置”对话框,左边展开项目,在“源文件”中找到出错的文件,然后在右边选择“C/C++”属性 页,在Category下拉框中选择“Precompiled He ...
- laravel MVC分布及数据库配置
laravel MVC分布 M app\Http\Middleware V resources\views C app\Http\Controllers 数据库配置 目录 config\datab ...
- (十二)SpringBoot 设置定时任务
一:创建定时任务 创建core→tesks→tesk.java package com.example.demo.core.tasks; import org.springframework.sche ...
- C 语言实例 - 从文件中读取一行
C 语言实例 - 从文件中读取一行 从文件中读取一行. 文件 runoob.txt 内容: $ cat runoob.txt runoob.com google.com 实例 #include < ...
- bzoj1101:[POI2007]ZAP-Queries
[POI2007]ZAP-Queries 题意简述:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a,y<=b,并且gcd(x,y)=d. Solution 很显然这是一个莫比 ...
- 关于maven项目导入后缺jar包问题的处理方法
1.maven项目的好处:方便,我们在把自己写好的代码发送给目标人物时可以精简代码——把target目录,一些设置目录之类的都删除掉,接下来要做的就是尽可能的只留下一个src文件夹及pom.xml文件 ...