题目链接 https://vjudge.net/problem/UVA-11374

【题意】
市民从市区去机场要走机场快线,机场快线分为经济线和商业线两种,你只有一张商业线车票,只能坐一站商业线,其它时候只能坐经济线,忽略换乘时间,找到一条去机场最快的线路。

【思路】
大白书329页例题,可以先按照经济线建立无向图,用dijkstra算法分别求出以起点和以终点为源点的最短路,然后依次枚举每种经济线,看看能不能更省时间,如果能就保留这种方案,具体细节看代码

#include<bits/stdc++.h>
using namespace std;const int inf = 0x3f3f3f3f;
const int maxn = 550;
const int maxk = 1050;struct Edge {int from, to, dist;Edge(int f, int t, int d) :from(f), to(t), dist(d) {}
};struct HeapNode {int d, u;HeapNode(int dd, int uu) :d(dd), u(uu) {};bool operator < (const HeapNode& rhs) const {return d > rhs.d;}
};struct Dijkstra {int n, m;           vector<Edge> edges; vector<int> g[maxn];bool done[maxn];    int d[maxn];        int p[maxn];        void init(int n) {this->n = n;for (int i = 0; i < n; ++i) g[i].clear();   edges.clear();  }void add(int from, int to, int dist) {  edges.push_back(Edge(from, to, dist));m = edges.size();g[from].push_back(m - 1);}void dijkstra(int s) {  priority_queue<HeapNode> que;for (int i = 0; i < n; ++i) d[i] = inf;d[s] = 0;memset(done, 0, sizeof(done));que.push(HeapNode(0, s));while (!que.empty()) {HeapNode x = que.top();que.pop();int u = x.u;if (done[u]) continue;done[u] = true;for (int i = 0; i < g[u].size(); ++i) {Edge& e = edges[g[u][i]];if (d[e.to] > d[u] + e.dist) {d[e.to] = d[u] + e.dist;p[e.to] = g[u][i];que.push(HeapNode(d[e.to], e.to));}}}}
};int n, m, k, s, t;
int d1[maxn], d2[maxn];
int p1[maxn], p2[maxn];
Dijkstra di;void print1(int x) {//针对起点if (x == s) {printf("%d", 1 + s);return;}Edge& e = di.edges[p1[x]];print1(e.from);printf(" %d", 1 + x);
}void print2(int x) {//针对终点if (x == t) {printf(" %d\n", 1 + t);return;}printf(" %d", 1 + x);Edge& e = di.edges[p2[x]];print2(e.from);
}int main() {int flag = 0;while (scanf("%d%d%d", &n, &s, &t) == 3) {--s, --t;if (flag) putchar('\n');flag = 1;di.init(n);scanf("%d", &m);for (int i = 0; i < m; ++i) {int u, v, c;scanf("%d%d%d", &u, &v, &c);--u, --v;di.add(u, v, c);di.add(v, u, c);}di.dijkstra(s);memcpy(d1, di.d, sizeof(d1));memcpy(p1, di.p, sizeof(p1));di.dijkstra(t);memcpy(d2, di.d, sizeof(d2));memcpy(p2, di.p, sizeof(p2));int ans = d1[t], sto = -1, tto = -1;scanf("%d", &k);for (int i = 0; i < k; ++i) {int u, v, c;scanf("%d%d%d", &u, &v, &c);--u, --v;if (d1[u] + c + d2[v] < ans) {ans = d1[u] + c + d2[v];sto = u;tto = v;}if (d1[v] + c + d2[u] < ans) {ans = d1[v] + c + d2[u];sto = v;tto = u;}}if (-1 == sto) {print1(t);printf("\n");printf("Ticket Not Used\n");}else {print1(sto);print2(tto);printf("%d\n", sto + 1);}printf("%d\n", ans);}return 0;
}

Uva 11374 - Airport Express(枚举+最短路)相关推荐

  1. UVa 11374 - Airport Express

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

  2. 计算机网络ap图片,苹果AirPort Express无线AP开箱图赏

    一直以来,APPLE都是以其优越的性能.大气简约的工业设计而身为业界翘楚,其截然不同的计理念造就了苹果这个优秀的品牌.苹果早在1999年推出了第一款无线基站AirPort,引来不少业界人士的关注,而2 ...

  3. 【日常】记一次烦人的Apple Airport Express Base Station配置

    被学校停课了 思想品行分数不高 于是第一节:政治 第二节:政治... 第八节:政治 找别人借了手机 但是没有无线 只能心疼地(才不会x 用别人的流量 想起说还有个Airport Express 但是上 ...

  4. UVa 11374 机场快线

    https://vjudge.net/problem/UVA-11374 题意: 机场快线分为经济线和商业线两种,线路.速度和价格都不同.你有一张商业线车票,可以坐一站商业线,而其他时候只能乘坐经济线 ...

  5. hdu2363 枚举最短路

    (1) 二分     把所有的高度都拿过来,组合起来,sort一遍,然后二分,找到能连通的最小的那个,但这里存在一起情况,就是遇到高度差相等的时候会bug.... (2) 枚举 连通直接break   ...

  6. UVa 1354 天平难题 枚举二叉树

    题意:给出房间宽度 r 和 s 个挂坠的重量 wi,设计一个尽量宽的天平,挂着所有挂坠.天平由一些长度为 1 的木棍组成,木棍的每一端要么挂一个挂坠,要么挂另外一个木棍. 这题卡了很久,看了很多大神的 ...

  7. UVA 10269 Super Mario,最短路+动态规划

    这个题目我昨晚看到的,没什么思路,因为马里奥有boot加速器,只要中间没有城堡,即可不耗时间和脚力,瞬间移动不超过L距离,遇见城堡就要停下来,当然不能该使用超过K次...我纠结了很久,最终觉得还是只能 ...

  8. Uva 201 Squares (暴力 + 枚举)

    [题意] 给出  n*n 的 点 H 横向  V  纵向  (注意)  V  想 I,j  相反 问 边 为1 ,2 , 3 .... n 的  正方向有几个 [思路] n 很小 直接暴力 枚举 枚举 ...

  9. uva 11374(Dijkstra) HappyNewYear!!!

    2013年最后一题,也是最后一篇随笔~祝大家新年快乐! 题意:在一张无向图中, 有两种公交线路,快线和慢线.现在有一个人想要从s->e但是他只有一张快线车票.所以快线只能乘坐一次,慢线可以随便乘 ...

最新文章

  1. 从产品的适用性以及费用方面考虑
  2. [Spring MVC起步]我的第一个MVC
  3. Vue中使用can-autoplay插件实现浏览器不支持自动播放音频时提示点击
  4. C#中的几个实用的代码
  5. mybatis大于小于的转义
  6. 又双叒叕是一个动态简历
  7. 如何让网站文章秒收录
  8. 计算机英语词汇mp3,【听单词】常用半导体英语词汇大全52,半导体专业英语单词MP3...
  9. 地址null一个简单的第三人称汽车驾驶系统
  10. Geek必备神器 - Google眼镜(Google glass)的十大特色
  11. python学习视频-2018年最新Python学习路线图(内含大纲+视频+工具)
  12. 谈谈目前我对区块链(Blockchain)的认识
  13. curl: symbol lookup error: curl: undefined symbol: curl_mime_free
  14. 二级 c语言真题及答案,3月计算机二级C语言真题及答案(完整版)
  15. linux 弱口令扫描,弱口令扫描神器XSCAN 一款经典弱口令扫描软件 可搜索各种端口(3389等) 各种系统(XP WIN7等) - 下载 - 搜珍网...
  16. 15款国内外知名优秀PHP集成环境推荐、PHP绿色集成环境推荐
  17. element el-select 支持拼音码和中文检索 检索的时候必须加属性 filterable
  18. 使用ImageMagick将eps批量导出为透明png图片
  19. 玩转pjsip之一 简介
  20. Python 神操作:远程开机和关机

热门文章

  1. [Linux驱动炼成记] 11-快速修改芯片驱动中寄存器的值
  2. TDSQL演进三部曲
  3. 9.Android 万能ViewHolder
  4. 人物专访 | 从《黑客帝国》到《花木兰》的特效,制作人Diana这40年
  5. springboot的登录拦截器的学习
  6. 五分钟讲透开关电源buck降压基本原理
  7. 放假安排 自己MARK
  8. 2021年中国乳胶床垫市场趋势报告、技术动态创新及2027年市场预测
  9. 解决[W pthreadpool-cpp.cc:90] Warning: Leaking Caffe2 thread-pool after fork. (function pthreadpool)
  10. 南林计算机科学,南京林业大学信息科学技术学院