题意:

有N个城市,编号1...N,无法从1出发到N,需要通过其他城市中转,并且到达后需隔离,求1到N时间最短的路线。

思路:

最短路变形,求时间最短,使用Dijkstra算法松弛时需加上隔离的时间,注意,到达城市N不用隔离。

代码:

#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;const int N = 1010;
const int INF = 0x3f3f3f3f;
int n, m, t[N], d[N];
bool vis[N];
struct Edge {int u, v, w;Edge(int u, int v, int w): u(u), v(v), w(w) {}
};
struct Node {int u, d;bool operator < (const Node& a) const {return d > a.d;}Node(int u, int d): u(u), d(d) {}
};
vector<Edge> edges;
vector<int> G[N];
int dijkstra() {priority_queue<Node> q;q.push(Node(1, 0));memset(d, INF, sizeof(d));memset(vis, 0, sizeof(vis));d[1] = 0;while(!q.empty()) {Node x = q.top(); q.pop();if(vis[n])break;if(vis[x.u])continue;vis[x.u] = true;for(int i=0; i<G[x.u].size(); i++) {auto& e = edges[G[x.u][i]];if(e.v == n) {if(d[x.u] + e.w < d[e.v]) {//到达城市N不需隔离,也可输出时直接减去隔离时间d[e.v] = d[x.u] + e.w;q.push(Node(e.v, d[e.v]));}}else {if(d[x.u] + e.w + t[e.v] < d[e.v]) {d[e.v] = d[x.u] + e.w + t[e.v];q.push(Node(e.v, d[e.v]));}}}}return d[n];
}int main() {cin>>n>>m;for(int i=1; i<=n; i++)cin>>t[i];int u, v, w;for(int i=0; i<m; i++) {cin>>u>>v>>w;edges.push_back(Edge(u, v, w));edges.push_back(Edge(v, u, w));//双向路线G[u].push_back(i*2);G[v].push_back(i*2+1);}int ans = dijkstra();cout<<ans<<endl;
}

2022年第十三届蓝桥杯大赛软件类决赛C/C++大学B组E题出差相关推荐

  1. 2022年第十三届蓝桥杯大赛软件类决赛C/C++大学B组C题卡牌

    题意: 有n种牌,第i种牌有ai 张,一套牌为n张牌每种各一张,为凑出更多的牌,用m张空白牌写上种类,每种最多写bi张,求最多能凑几幅牌. 思考: 已知ai.bi,不考虑有多少张空白牌,最多能凑min ...

  2. 2022年第十三届蓝桥杯大赛软件类决赛C/C++大学B组(国赛)题解

    2022国赛B组 题目一:C题 卡牌 题目二:D题 最大数字 题目三:E题 出差 题目四:F题 费用报销 题目五:G题 故障 题目六:H题 机房 题目七:I题 齿轮 题目八:J题 搬砖 刷题链接: h ...

  3. 2022年第十三届蓝桥杯大赛软件类决赛C/C++/Java/Python真题

    1.2022年第十三届蓝桥杯大赛软件类决赛C/C++大学A组真题 2022年第十三届蓝桥杯大赛软件类决赛C/C++大学A组真题 - 题库 - C语言网 2. 2022年第十三届蓝桥杯大赛软件类决赛C/ ...

  4. 第十三届蓝桥杯大赛软件赛决赛(Java 大学C组)

    蓝桥杯 2022年国赛真题 Java 大学C组 试题 A: 斐波那契与 7 试题 B: 小蓝做实验 试题 C: 取模 试题 D: 内存空间 试题 E: 斐波那契数组 试题 F: 最大公约数 试题 G: ...

  5. 第十三届蓝桥杯大赛软件赛决赛(Java 大学B组)

    蓝桥杯 2022年国赛真题 Java 大学B组  试题 A: 重合次数  试题 B: 数数  试题 C: 左移右移  试题 D: 窗口  试题 E: 迷宫  试题 F: 小球称重  试题 G: 背包与 ...

  6. 第十三届蓝桥杯大赛软件赛决赛(Java 大学A组)

    蓝桥杯 2022年国赛真题 Java 大学A组 试题 A: 火柴棒数字 试题 B: 小蓝与钥匙 试题 C: 内存空间 试题 D: 斐波那契数组 试题 E: 交通信号 试题 F: 数组个数 试题 G: ...

  7. 第十三届蓝桥杯大赛软件赛省赛 Python 大学 B 组

    第十三届蓝桥杯大赛软件赛省赛 Python 大学 B 组 第十三届蓝桥杯大赛软件赛省赛 Python 大学 B 组 [考生须知] 考试开始后,选手首先下载题目,并使用考场现场公布的解压密码解压试 题. ...

  8. 第十三届蓝桥杯大赛软件赛省赛 Python 大学 C 组

    试题 A: 排列字母 本题总分:5 分 [问题描述] 小蓝要把一个字符串中的字母按其在字母表中的顺序排列. 例如,LANQIAO 排列后为 AAILNOQ. 又如,GOODGOODSTUDYDAYDA ...

  9. 第十三届蓝桥杯大赛软件类决赛Java大学B组C题——左移右移

    [问题描述] 小蓝有一个长度为 N 的数组,初始时从左到右依次是 1, 2, 3, . . . N. 之后小蓝对这个数组进行了 M 次操作,每次操作可能是以下 2 种之一: 左移 x,即把 x 移动到 ...

最新文章

  1. 一些惹起热烈争议的PCB布线经验法则
  2. markdown 图片居中_Markdown常用语法汇总
  3. Linux虚拟机ip为127.0.0.1的处理
  4. python与javascript比较_Javascript变量语义与Python的比较
  5. 单线程写多线程读安全的结构体
  6. 互联网商业模式:增值还是减值?
  7. Luogu P1311 选择客栈(前缀和)
  8. SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum
  9. python迭代计算pi_python使用三角迭代计算圆周率PI的方法
  10. 锂离子电池性能测试软件,锂离子电池的常规性能测试方式介绍
  11. 【原创】自制操作系统知识储备(一)---流程篇
  12. foo/bar/baz/qux
  13. 增删改查--项目基于JavaWeb+Servlet+MySQL的【学生管理系统】
  14. Windows Server - 如何查看机器的开机/关机时间
  15. 【ctype.h isdigit】
  16. 爪哇国新游记之六----抽象类
  17. 【企业微信-客户服务】错误代码:48002, 错误信息:API接口无权限调用
  18. 关于Xftp7的下载和安装
  19. 如何用django来创建一个网站
  20. 技术大佬:我去,你竟然还在用 try–catch-finally

热门文章

  1. 电大计算机基础应用操作题,2016年电大-电大 网考 计算机应用基础 操作题大全.doc...
  2. 快手上用计算机算出一段话,快手一边说话一边出字是怎么弄的 可以这样做
  3. AI 工具 22个使用场景、500个通用提问技巧说明
  4. 【吐槽系列】如何用最贱蛋的方式将web程序变为桌面应用
  5. Semi-supervised Semantic Segmentation with Error Localization Network(基于误差定位网络的半监督语义分割 )
  6. Linux性能优化(三)——sysstat性能监控工具
  7. DOTNET中GC原理
  8. mini-MBA学习总结一:建设高效团队和决策与执行
  9. PhotoScan空三加密操作流程
  10. 工作站的数据处理比微型计算机,高效液相色谱分析-数据处理系统