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

常见的思路,预处理出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. conditon_variable(条件变量)用于线程间同步

    conditon_variable(条件变量)用于线程间同步 condition_variable有5个函数,函数名及对应的功能如下: wait阻塞自己,等待唤醒 wait_for阻塞自己,等待唤醒, ...

  2. shell初级-----更多结构化命令

    for命令 bash shell提供了for命令,允许你创建一个遍历一系列的循环. for var in list do commands done 1.读取列表中的值 for命令最基本的用法就是遍历 ...

  3. Java判断一个数是不是快乐数

    快乐数的定义: 快乐数(happy number)有以下的特性: 在给定的进位制下,该数字所有数位(digits)的平方和,得到的新数再次求所有数位的平方和,如此重复进行,最终结果必为1. 以十进制为 ...

  4. 201621123016 《Java程序设计》第十四周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结与数据库相关内容. 使用数据库技术改造你的系统 2.1 简述如何使用数据库技术改造你的系统.要建立什么表?截图你的表设计. 把我原来 ...

  5. SourceTree切换语言

    点击ok,重启SourceTree即生效 over!over!over!

  6. hdoj5493【树状数组+二分】

    题意: 给你n个人的高度, 再给出一个值代表该高度下有前面比他高的 或 后面比他高的人数, 求满足条件下的最小字典序, 不行的话输出"impossible" 思路: 对于最小字典序 ...

  7. 基于nginx的配置网站密码认证

    在nginx配置服务中,创建访问网站密码认证. 1)需要ngx_http_auth_basic_module模块 语法: Syntax: auth_basic string | off; Defaul ...

  8. Elasticsearch and MongoDb

    http://www.linkedin.com/groups/Difference-between-elasticsearch-MongoDB-3393294.S.588764405916973056 ...

  9. IP服务-3-DHCP

    DHCP代表了动态IP地址分配的下一阶段.DHCP建立在BOOTP协议格式的基础上,专注于动态分配多种信息,以及为未来的扩展提供灵活的消息结构,并且无需预先定义每个客户端的MAC地址.DHCP提供的功 ...

  10. python操作redis之hash操作

    # __author__ = 'STEVEN' import redis,time #连接池 polls = redis.ConnectionPool(host='192.168.43.22',por ...