蓝桥杯2022年第十三届决赛真题-出差

news2024/11/17 6:31:17

题目描述

A 国有 N 个城市,编号为 1 . . . N。小明是编号为 1 的城市中一家公司的员工,今天突然接到了上级通知需要去编号为 N 的城市出差。

由于疫情原因,很多直达的交通方式暂时关闭,小明无法乘坐飞机直接从城市 1 到达城市 N,需要通过其他城市进行陆路交通中转。小明通过交通信息网,查询到了 M 条城市之间仍然还开通的路线信息以及每一条路线需要花费的时间。

同样由于疫情原因,小明到达一个城市后需要隔离观察一段时间才能离开该城市前往其他城市。通过网络,小明也查询到了各个城市的隔离信息。(由于小明之前在城市 1,因此可以直接离开城市 1,不需要隔离)

由于上级要求,小明希望能够尽快赶到城市 N,因此他求助于你,希望你能帮他规划一条路线,能够在最短时间内到达城市 N。 

输入格式

第 1 行:两个正整数 N, M, N 表示 A 国的城市数量,M 表示未关闭的路线数量

第 2 行:N 个正整数,第 i 个整数 Ci 表示到达编号为 i 的城市后需要隔离的时间

第 3 . . . M + 2 行:每行 3 个正整数,u, v, c,表示有一条城市 u 到城市 v 的双向路线仍然开通着,通过该路线的时间为 c

输出格式

第 1 行:1 个正整数,表示小明从城市 1 出发到达城市 N 的最短时间(到达城市 N,不需要计算城市 N 的隔离时间)

样例输入

4 4
5 7 3 4
1 2 4
1 3 5
2 4 3
3 4 5

样例输出

13

提示

路线 1:1 -> 2 -> 4,时间为 4+7(隔离)+3=14

路线 2:1 -> 3 -> 4,时间为 5+3(隔离)+5=13

对于 100% 的数据,1 ≤ N ≤ 1000 , 1 ≤ M ≤ 10000, 1 ≤ Ci ≤ 200, 1 ≤ u, v ≤ N, 1 ≤ c ≤ 1000

 解析:

        Dijkstra,每个城市的隔离时间,可以加到以该城市为终点的有向边的交通时间上,最后的结果减掉 n 点的隔离时间。

        注意,如果 n 为 1 要特判。

代码:

        

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+5;
const int INF=0x3f3f3f3f;
struct edge{
	int to,w;
};
struct node{
	int id,dis;
	bool operator<(const node& a)const{
		return dis>a.dis;
	}
};
int n,m,num[N];
vector<edge>e[N];
void Dijkstra(){
	int s=1,dis[N],done[N];
	for(int i=1;i<=n;i++) dis[i]=INF,done[i]=0;
	priority_queue<node>q;
	s=1,dis[s]=0;
	q.push({s,dis[s]});
	while(q.size()){
		node u=q.top();
		q.pop();
		if(done[u.id]) continue;
		done[u.id]=1;
		for(int i=0;i<e[u.id].size();i++){
			edge x=e[u.id][i];
			if(done[x.to]) continue;
			if(dis[x.to]>x.w+u.dis){
				dis[x.to]=x.w+u.dis;
				q.push({x.to,dis[x.to]});
			}
		}
	} 
	cout<<dis[n]-num[n];
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++) scanf("%d",&num[i]);
	for(int i=0;i<m;i++){
		int a,b,w;
		scanf("%d%d%d",&a,&b,&w);
		e[a].push_back({b,w+num[b]});
		e[b].push_back({a,w+num[a]});
	}
	if(n==1){
		cout<<0;
		return 0;
	}
	Dijkstra();
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/611881.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【教学类-10-03】20230603《空心图案3*2-单元格不重复》( 随机图案拼贴)(中班主题)

作品展示&#xff1a; 背景需求&#xff1a; 最近在做小课题结题资料&#xff0c;看到之前做过的几个学具项目&#xff0c;其中的空心图案拼贴画很不错&#xff08;中班上学期做过&#xff09;想到中6班的孩子还没有玩过&#xff0c;就想再打印一套学具&#xff08;中班下学期…

chat聊天系统消息消费时遇到的问题及优化思路(二)

1、前言 考虑下面几个条件下如何提升kafka的消费速度 消息要求严格有序&#xff0c;如chat聊天消息业务处理速度慢&#xff0c;如处理一条数据需要100ms分片不合理&#xff0c;如有的分区很闲&#xff0c;有的分区消息数量积压 2、解决方案 1、顺序问题 关于消息消费时存在…

leetcode701. 二叉搜索树中的插入操作(java)

二叉搜索树中的插入操作 leetcode701. 二叉搜索树中的插入操作题目描述 递归解题解题思路代码演示 二叉树专题 leetcode701. 二叉搜索树中的插入操作 原题链接&#xff1a; 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problem…

保护您的邮件安全:Exchange Reporter Plus 助您全面监控与审计

引言&#xff1a; 在当今数字化时代&#xff0c;电子邮件已成为我们日常生活和工作中不可或缺的沟通工具。然而&#xff0c;随着电子邮件的广泛使用&#xff0c;邮件安全也成为一个备受关注的议题。为了保护组织的敏感信息和防止数据泄露&#xff0c;我们需要一种强大的解决方…

go 并发/并行/协程/sync锁读写锁

下面来介绍几个概念&#xff1a; 进程/线程&#xff1a; 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。线程是进程的一个执行实体&#xff0c;是 CPU 调度和分派的基本单位&#xff0c;它是比进程更小的能独立运行的基本单位。一…

APO AI一款基于GPT-4.0的AI聊天工具

APO AI APO AI是一款为用户提供AI聊天机器人功能的软件&#xff0c;用户在这里可以免费使用ChatGP3.5和ChatGPT4.0&#xff0c;这里的用户可以和AI机器人自由聊天&#xff0c;非常有趣的人工智能对话&#xff0c;并且AI还能代替你写文章、脚本、代码、文案等等。 测试GPT4.0 …

python数据可视化--matplotlib库

目录 python数据可视化--matplotlib库0、前言1、饼图2、直方图3、折线图4、散点图5、柱状图6、箱线图7、极坐标图8、步阶图9、谱图10、功率密度图11、相干谱图 python数据可视化–matplotlib库 0、前言 在进行数据分析的过程中&#xff0c;正所谓“一图胜千言”&#xff0c;一…

java并发编程:重排序与happens-before介绍

文章目录 什么是重排序&#xff1f;顺序一致性模型与JMM的保证数据竞争与顺序一致性顺序一致性模型JMM中同步程序的顺序一致性效果JMM中未同步程序的顺序一致性效果 happens-before什么是happens-before?天然的happens-before关系 什么是重排序&#xff1f; 计算机在执行程序…

代码随想录算法训练营第四十八天|198.打家劫舍|213.打家劫舍II|337.打家劫舍III

LeetCode198.打家劫舍 动态规划五部曲&#xff1a; 1&#xff0c;确定dp数组&#xff08;dp table&#xff09;以及下标的含义&#xff1a;dp[i]&#xff1a;考虑下标i&#xff08;包括i&#xff09;以内的房屋&#xff0c;最多可以偷窃的金额为dp[i]。 2&#xff0c;确定递…

【初识Spring框架】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 1. Spring框架是什么&#xff1f; 2. IOC 容器…

[Flink] Flink On Yarn(yarn-session.sh)启动错误

在Flink上启动 yarn-session.sh时出现 The number of requested virtual cores for application master 1 exceeds the maximum number of virtual cores 0 available in the Yarn Cluster.错误。 版本说明&#xff1a; Hadoop&#xff1a; 3.3.4 Flink&#xff1a;1.17.1 问题…

锐捷AC的部署实例

进行锐捷AC部署时&#xff0c;遇到了一些问题&#xff0c;遂记录下来&#xff0c;如若大家在项目过程中遇到类似问题可以对照解决。 写在前面&#xff08;锐捷AC的基础配置&#xff09; ac-controller //配置AC的capwap源地址信息&#xff0c;国家码等…

[操作系统]1.计算机系统概述

写在前面:这篇是为了复习基础知识准备的,而不是根据学校的教材走的,所以叙述有些出入的地方请见谅,该系列旨在快速梳理操作系统的基础知识和一些常见的问题点,知识框架来自于王道操作系统,后续有机会的话会继续补充 1.操作系统的基本概念 一个计算机系统可以自上而下分成四个…

go 流媒体服务搭建-01

这里写自定义目录标题 go 流媒体服务搭建-01 go 流媒体服务搭建-01 新建go 项目&#xff0c;配置go 版本1.19 新增main.go package mainfunc main() {}新增go.mod 文件 go mod init mym7s导入m7s 主包 go get m7s.live/engine/v4查看go.mod 文件 发现下载了一段的依赖包&…

2023年面试工具篇Postman面试题及答案

1. 说下你对Postman的了解&#xff1f; Postman是一种接口调试与http接口测试的工具。我们可以非常方便的用来模拟get或者post或者其他方式的请求来调试和测试接口。 Postman 的优点 •支持各种的请求类型: get、post、put、patch、delete 等 •支持在线存储数据&#xff0c;…

如果你当架构师,从0开始,如何做一个后台项目的架构?

前言 在40岁老架构师 尼恩的读者社群(50)中&#xff0c;很多小伙伴要拿高薪&#xff0c;这就要面试架构师&#xff0c;要完成架构的升级&#xff0c;进入架构赛道。 在架构师的面试过程中&#xff0c;常常会遇到下面的问题&#xff1a; 如果给你一个项目要你从0到1做架构&…

Python入门教程+项目实战-13.2节-集合的操作方法

目录 13.2.1 集合的常用操作方法 13.2.2 集合的查找 13.2.3 集合的添加 13.2.4 集合的删除 13.2.4 集合运算 13.2.5 知识要点 13.2.6 系统学习python 13.2.1 集合的常用操作方法 集合类型是一种抽象数据类型&#xff0c;抽象数据类型定义了数据类型的操作方法&#xff…

怎么把投票链接生成二维码投票链接怎么生成二维码

用户在使用微信投票的时候&#xff0c;需要功能齐全&#xff0c;又快捷方便的投票小程序。 而“活动星投票”这款软件使用非常的方便&#xff0c;用户可以随时使用手机微信小程序获得线上投票服务&#xff0c;很多用户都很喜欢“活动星投票”这款软件。 “活动星投票”小程序在…

ASEMI代理英飞凌IPA50R190CE,MOS管IPA50R190CE参数

编辑-Z IPA50R190CE参数描述&#xff1a; 型号&#xff1a;IPA50R190CE 持续漏极电流&#xff1a;24.8A 脉冲漏极电流&#xff1a;63A 栅极-源极电压&#xff1a;20V 功耗&#xff1a;32W 操作和储存温度&#xff1a;-40~150℃ 连续二极管正向电流&#xff1a;8.1A 漏…

5月VR大数据:Quest 2下跌超1%,其它变化不大

Hello大家好&#xff0c;每月一期的VR内容/硬件大数据统计又和大家见面了。 想了解VR软硬件行情么&#xff1f;关注这里就对了。我们会统计Steam平台的用户及内容等数据&#xff0c;每月初准时为你推送&#xff0c;不要错过喔&#xff01; 本数据报告包含&#xff1a;Steam VR硬…