题目链接


题目描述

某华大学小飞中奖了!!!奖品是一张免费飞机票,唯一遗憾的是,这张飞机票有限定区间,需要从k个区间中选择其一。小飞打算高高兴兴的出去玩啦,但是,从s地出发,去往e地,可能没有直达的飞机票,可能需要转机(所有飞机线路都是无向的),小飞毕竟是个学生党,出去玩首先得考虑省钱,所以,小飞遇到麻烦了,请帮小飞计算最便宜的一条路线,小飞会很感激你的。

输入描述:

第一行为三个整数n,s,e,n表示n个不同城市的飞机场,s为出发点,e为目的地。(1<=n<=1000,  1<=s,e<=n)第二行为一个整数m,表示m条普通飞机线路,接下来的m行描述每条线路,每行包含三个整数a、b、c,a、b代表普通飞机线路两端,c表示价格。(1<=m<=1000,  1<=a,b<=n,  1<=c<=1000)接下来的一行为一个整数k,表示k个免费机票的航线区间, 然后k行来描述每条免费航线,每行两个整数a’、b’,    分别代表免费航线两端。(1<=k<=1000,  1<=a’,b’<=n)

输出描述:

每个测试数据有两行输出,第一行为是否使用免费飞机票,是则输出“Yes”,否则输出“No”。第二行输出总共花费。

我们就是要找出所有的K个免费端点(u -> v)两端的从S出发和从T出发做到达的距离加上这段免费距离,去看是否需要使用这段中间的免费区间。具体可以看看代码,很好理解的。


#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <limits>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#define lowbit(x) ( x&(-x) )
#define pi 3.141592653589793
#define e 2.718281828459045
#define INF 0x3f3f3f3f
#define HalF (l + r)>>1
#define lsn rt<<1
#define rsn rt<<1|1
#define Lson lsn, l, mid
#define Rson rsn, mid+1, r
#define QL Lson, ql, qr
#define QR Rson, ql, qr
#define myself rt, l, r
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const int maxN = 1e3 + 7, maxE  =4e3 + 7;
int N, S, T, dis[2][maxN], res, M, head[maxN], cnt, K, ans;
struct Eddge
{int nex, to, cost;Eddge(int a=-1, int b=0, int c=0):nex(a), to(b), cost(c) {}
}edge[maxE];
inline void addEddge(int u, int v, int cost)
{edge[cnt] = Eddge(head[u], v, cost);head[u] = cnt++;
}
inline void _add(int u, int v, int cost) { addEddge(u, v, cost); addEddge(v, u, cost); }
bool inque[maxN];
queue<int> Q;
inline void spfa(int st, int op)
{memset(inque, false, sizeof(inque));while(!Q.empty()) Q.pop();Q.push(st); inque[st] = true;   dis[op][st] = 0;while(!Q.empty()){int u = Q.front();  Q.pop();    inque[u] = false;for(int i=head[u], v, c; ~i; i=edge[i].nex){v = edge[i].to; c = edge[i].cost;if(dis[op][v] > dis[op][u] + c){dis[op][v] = dis[op][u] + c;if(!inque[v]){inque[v] = true;Q.push(v);}}}}
}
inline void init()
{cnt = 0;memset(head, -1, sizeof(head));memset(dis, INF, sizeof(dis));
}
int main()
{while(scanf("%d%d%d", &N, &S, &T)!=EOF){init();scanf("%d", &M);for(int i=1, u, v, w; i<=M; i++){scanf("%d%d%d", &u, &v, &w);_add(u, v, w);}spfa(S, 0);spfa(T, 1);scanf("%d", &K);ans = dis[0][T];bool flag = false;for(int i=1, u, v; i<=K; i++){scanf("%d%d", &u, &v);if(ans > dis[0][u] + dis[1][v]){flag = true;ans = dis[0][u] + dis[1][v];}if(ans > dis[1][u] + dis[0][v]){flag = true;ans = dis[1][u] + dis[0][v];}}printf(flag ? "Yes\n" : "No\n");printf("%d\n", ans);}return 0;
}

免费机票【SPFA】【南华大学第十五届ACM程序设计竞赛】相关推荐

  1. 南华大学第十五届ACM程序设计竞赛(重现赛) E 免费机票

    链接:https://ac.nowcoder.com/acm/contest/699/E 来源:牛客网 题目描述 某华大学小飞中奖了!!!奖品是一张免费飞机票,唯一遗憾的是,这张飞机票有限定区间,需要 ...

  2. 南华大学第十五届ACM程序设计竞赛(重现赛)E 免费机票(单边最短路)

    题目链接 题目描述 某华大学小飞中奖了!!!奖品是一张免费飞机票,唯一遗憾的是,这张飞机票有限定区间,需要从k个区间中选择其一.小飞打算高高兴兴的出去玩啦,但是,从s地出发,去往e地,可能没有直达的飞 ...

  3. 2022.3.12 绍兴文理学院元培学院第十五届大学生程序设计竞赛

    绍兴文理学院元培学院第十五届大学生程序设计竞赛 A 阳光明媚的数学题 B 爱的素数 C 庄生的笔 D 上流的聚餐 E 规划(一) F 规划(二) G 运动的球球 H 物资转移 I 小杨环 J 前四位 ...

  4. 浙江省第十五届大学生程序设计竞赛 记录

    其实还是非常激动,当初浙大校赛只有三题,然后后来通过 tryout 幸运得以参加省赛 其实当初天梯赛没有被选上,就以为大概是没有希望打省赛了.. 虽然说不是所有的努力都会得到应有的回报,但是没有努力的 ...

  5. 绍兴文理学院元培学院第十五届大学生程序设计竞赛

    题目集入口 - 补题 (pintia.cn) 目录 1.爱的素数(分析题) 2.规划一(最小生成树) 3.物资转移(贪心) 4.前四位(高精度) 5.上流的聚餐(并查集) 6.庄生的笔(分析题) 1. ...

  6. 第十五届智能车竞赛芯片选型浅析

    ➤ 01第十五届竞赛 众所周知,第十五届智能车竞赛虽然来晚了几个月,但依然热闹非凡,芯片厂商不再由NXP独家提供,呈现了卓老师所说的三足鼎立的局面,可以选择由NXP.Infineon.STC三家公司提 ...

  7. 第十五届智能车竞赛技术报告-成电金秋-AI电磁

    01引言 1.1 大赛介绍 全国大学生"恩智浦"杯智能汽车竞赛是以"立足培养.重在参与.鼓励 探索.追求卓越"为宗旨,鼓励创新的一项科技竞赛活动.今年首次新增了 ...

  8. 怀化学院计算机科学张显老师,怀化学院第十二届大学生计算机程序设计竞赛暨2019年湖南省第十五届大学生程序设计大赛选拔赛完美落幕...

    原标题:怀化学院第十二届大学生计算机程序设计竞赛暨2019年湖南省第十五届大学生程序设计大赛选拔赛完美落幕 2019年6月9日,由我校教务处主办,计算机科学与工程学院.怀化学院ACM协会承办的怀化学院 ...

  9. 2016年蜀山区第十五届青少年信息学竞赛

    2016年蜀山区第十五届青少年信息学竞赛 小学组试题 一.题目概况 题目名称 求差 生日 抓牛 工资 文件名

最新文章

  1. Web前端开发人员和设计师必读文章推荐【系列七】
  2. java生成0~9个9个不相等的整数
  3. python保存创建文件报错 with open(fileName,‘w‘) as fp: IOError: [Errno 22] invalid mode (‘w‘) or filename
  4. Android之单复选框及Spinner实现二级联动
  5. 软件测试作业3:软件测试的16条公理
  6. CentOs7安装apache以及遇到的问题
  7. 【HDU - 2612】Find a way(bfs)
  8. android公网ip,android 获取公网ip 内网ip
  9. Python可以这样学(第十季:网络爬虫实战)-董付国-专题视频课程
  10. PyCharm 中选中一个变量/函数后,所有用到这个变量/函数的地方高亮显示,改配色方案
  11. WPF-DataContext
  12. 【Iphone 游戏开发之一】创建视图并绘制简单图形
  13. 广州.NET微软技术俱乐部微信群各位技术大牛的blog
  14. LumaQQ.NET For Visual Studio 2005 代码下载
  15. ubuntu 10.10 安装google拼音输入法 并实现光标跟随
  16. 网络招聘信息的分析与挖掘
  17. Windows与嵌入式linux设备数据传送工具——tftpd32软件使用说明
  18. 文献阅读—GAIN:Missing Data Imputation using Generative Adversarial Nets
  19. select * from a,b用法
  20. Mac -- zsh-最新全网超详细的个性化终端(Terminal)颜色及vim颜色配置

热门文章

  1. 小程序不能上划 下滑
  2. GD25LQ32ENIGR NOR 存储器、SLB9670VQ2.0模块应用、PM8533B-F3EI PCIe 交换机 接口
  3. 矢量场可视化的方法--LIC
  4. 未明学院:数据说 | 故宫600年,从“百年IP”到一代网红
  5. MySQL15道经典练习题
  6. mysql 基本操作题_Mysql基础练习12题
  7. 字符串-后缀树和后缀数组详解
  8. 超甜来袭!治愈系数字藏品限时免费,速抢!
  9. java怎么输出数组
  10. 2018Q4欧洲智能手机统计数据出炉 华为小米增幅明显