题目只有一条路径会发生改变。

常见的思路,预处理出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 (最短路)的更多相关文章

  1. UVA - 11374 - Airport Express(堆优化Dijkstra)

    Problem    UVA - 11374 - Airport Express Time Limit: 1000 mSec Problem Description In a small city c ...

  2. UVA - 11374 Airport Express (Dijkstra模板+枚举)

    Description Problem D: Airport Express In a small city called Iokh, a train service, Airport-Express ...

  3. UVA 11374 Airport Express SPFA||dijkstra

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  4. UVA 11374 Airport Express(最短路)

    最短路. 把题目抽象一下:已知一张图,边上的权值表示长度.现在又有一些边,只能从其中选一条加入原图,使起点->终点的距离最小. 当加上一条边a->b,如果这条边更新了最短路,那么起点st- ...

  5. UVA 11374 Airport Express 机场快线(单源最短路,dijkstra,变形)

    题意: 给一幅图,要从s点要到e点,图中有两种无向边分别在两个集合中,第一个集合是可以无限次使用的,第二个集合中的边只能挑1条.问如何使距离最短?输出路径,用了第二个集合中的哪条边,最短距离. 思路: ...

  6. UVA 11374 Airport Express(枚举+最短路)

    枚举每条商业线<a, b>,设d[i]为起始点到每点的最短路,g[i]为终点到每点的最短路,ans便是min{d[a] + t[a, b] + g[b]}.注意下判断是否需要经过商业线.输 ...

  7. UVa 11374 - Airport Express ( dijkstra预处理 )

    起点和终点各做一次单源最短路, d1[i], d2[i]分别代表起点到i点的最短路和终点到i点的最短路,枚举商业线车票cost(a, b);  ans = min( d1[a] + cost(a, b ...

  8. 【uva11374】Airport Express 最短路

    题意: 在Iokh市中,机场快线是市民从市内去机场的首选交通工具.机场快线分为经济线和商业线两种,线路,速度和价钱都不同.你有一张商业线车票,可以坐一站商业线,而其他时候只能乘坐经济线.假设换乘时间忽 ...

  9. uva 11374 最短路+记录路径 dijkstra最短路模板

    UVA - 11374 Airport Express Time Limit:1000MS   Memory Limit:Unknown   64bit IO Format:%lld & %l ...

随机推荐

  1. UVa-10954

    10954 - Add All Time limit: 3.000 seconds Yup!! The problem name reflects your task; just add a set ...

  2. 一、使用 BeautifulSoup抓取网页信息信息

    一.解析网页信息 from bs4 import BeautifulSoup with open('C:/Users/michael/Desktop/Plan-for-combating-master ...

  3. D3.js(v3)+react 制作 一个带坐标轴与比例尺的折线图

    本章使用路径生成器来绘制一个折线图.以中国和日本的GDP数据为例:   //数据 var dataList = [ { coountry : "china", gdp : [ [2 ...

  4. Lightoj 1147【DP】

    题意: 把n个人分成两部分,要你怎么分使得两部分尽可能相等: 思路: 如果我们把一部分人的重量达到离sum/2最近,那就一定行啊 其实就是一条棒,两种不同的棒去拼接成一条棒,然后最好就是离mid最近, ...

  5. P3270 [JLOI2016]成绩比较(拉格朗日插值)

    传送门 挺神仙的啊-- 设\(f[i][j]\)为考虑前\(i\)门课程,有\(j\)个人被\(B\)爷碾压的方案数,那么转移为\[f[i][j]=\sum_{k=j}^{n-1}f[i-1][k]\ ...

  6. 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:4. 设备上报属性

    文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...

  7. Django框架知识2

    1.Http消息格式: 1.请求(request): 请求方法 请求路径 HTTP/1.1\r\n k1:v1\r\n k2:v2\r\n \r\n 请求体正文 2.响应(response) HTTP ...

  8. Python爬虫|爬取喜马拉雅音频

    "GOOD Python爬虫|爬取喜马拉雅音频 喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快.规模 ...

  9. 码云最火爆开源项目 TOP 50,你都用过哪些?

    前 20 名预览 排名软件排名软件 1zheng11AOSuite 2JFinal12Spiderman 3t-io13AG-Admin 4guns14renren-security 5hutool1 ...

  10. JDBC连接池一 自定义连接池

    package com.mozq.jdbc; import java.io.IOException; import java.io.InputStream; import java.sql.Conne ...