2022年第十三届蓝桥杯大赛软件类决赛C/C++大学B组E题出差
题意:
有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题出差相关推荐
- 2022年第十三届蓝桥杯大赛软件类决赛C/C++大学B组C题卡牌
题意: 有n种牌,第i种牌有ai 张,一套牌为n张牌每种各一张,为凑出更多的牌,用m张空白牌写上种类,每种最多写bi张,求最多能凑几幅牌. 思考: 已知ai.bi,不考虑有多少张空白牌,最多能凑min ...
- 2022年第十三届蓝桥杯大赛软件类决赛C/C++大学B组(国赛)题解
2022国赛B组 题目一:C题 卡牌 题目二:D题 最大数字 题目三:E题 出差 题目四:F题 费用报销 题目五:G题 故障 题目六:H题 机房 题目七:I题 齿轮 题目八:J题 搬砖 刷题链接: h ...
- 2022年第十三届蓝桥杯大赛软件类决赛C/C++/Java/Python真题
1.2022年第十三届蓝桥杯大赛软件类决赛C/C++大学A组真题 2022年第十三届蓝桥杯大赛软件类决赛C/C++大学A组真题 - 题库 - C语言网 2. 2022年第十三届蓝桥杯大赛软件类决赛C/ ...
- 第十三届蓝桥杯大赛软件赛决赛(Java 大学C组)
蓝桥杯 2022年国赛真题 Java 大学C组 试题 A: 斐波那契与 7 试题 B: 小蓝做实验 试题 C: 取模 试题 D: 内存空间 试题 E: 斐波那契数组 试题 F: 最大公约数 试题 G: ...
- 第十三届蓝桥杯大赛软件赛决赛(Java 大学B组)
蓝桥杯 2022年国赛真题 Java 大学B组 试题 A: 重合次数 试题 B: 数数 试题 C: 左移右移 试题 D: 窗口 试题 E: 迷宫 试题 F: 小球称重 试题 G: 背包与 ...
- 第十三届蓝桥杯大赛软件赛决赛(Java 大学A组)
蓝桥杯 2022年国赛真题 Java 大学A组 试题 A: 火柴棒数字 试题 B: 小蓝与钥匙 试题 C: 内存空间 试题 D: 斐波那契数组 试题 E: 交通信号 试题 F: 数组个数 试题 G: ...
- 第十三届蓝桥杯大赛软件赛省赛 Python 大学 B 组
第十三届蓝桥杯大赛软件赛省赛 Python 大学 B 组 第十三届蓝桥杯大赛软件赛省赛 Python 大学 B 组 [考生须知] 考试开始后,选手首先下载题目,并使用考场现场公布的解压密码解压试 题. ...
- 第十三届蓝桥杯大赛软件赛省赛 Python 大学 C 组
试题 A: 排列字母 本题总分:5 分 [问题描述] 小蓝要把一个字符串中的字母按其在字母表中的顺序排列. 例如,LANQIAO 排列后为 AAILNOQ. 又如,GOODGOODSTUDYDAYDA ...
- 第十三届蓝桥杯大赛软件类决赛Java大学B组C题——左移右移
[问题描述] 小蓝有一个长度为 N 的数组,初始时从左到右依次是 1, 2, 3, . . . N. 之后小蓝对这个数组进行了 M 次操作,每次操作可能是以下 2 种之一: 左移 x,即把 x 移动到 ...
最新文章
- 一些惹起热烈争议的PCB布线经验法则
- markdown 图片居中_Markdown常用语法汇总
- Linux虚拟机ip为127.0.0.1的处理
- python与javascript比较_Javascript变量语义与Python的比较
- 单线程写多线程读安全的结构体
- 互联网商业模式:增值还是减值?
- Luogu P1311 选择客栈(前缀和)
- SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum
- python迭代计算pi_python使用三角迭代计算圆周率PI的方法
- 锂离子电池性能测试软件,锂离子电池的常规性能测试方式介绍
- 【原创】自制操作系统知识储备(一)---流程篇
- foo/bar/baz/qux
- 增删改查--项目基于JavaWeb+Servlet+MySQL的【学生管理系统】
- Windows Server - 如何查看机器的开机/关机时间
- 【ctype.h isdigit】
- 爪哇国新游记之六----抽象类
- 【企业微信-客户服务】错误代码:48002, 错误信息:API接口无权限调用
- 关于Xftp7的下载和安装
- 如何用django来创建一个网站
- 技术大佬:我去,你竟然还在用 try–catch-finally
热门文章
- 电大计算机基础应用操作题,2016年电大-电大 网考 计算机应用基础 操作题大全.doc...
- 快手上用计算机算出一段话,快手一边说话一边出字是怎么弄的 可以这样做
- AI 工具 22个使用场景、500个通用提问技巧说明
- 【吐槽系列】如何用最贱蛋的方式将web程序变为桌面应用
- Semi-supervised Semantic Segmentation with Error Localization Network(基于误差定位网络的半监督语义分割 )
- Linux性能优化(三)——sysstat性能监控工具
- DOTNET中GC原理
- mini-MBA学习总结一:建设高效团队和决策与执行
- PhotoScan空三加密操作流程
- 工作站的数据处理比微型计算机,高效液相色谱分析-数据处理系统