【算法】信使(最短路问题)

 题目

战争时期,前线有 n 个哨所,每个哨所可能会与其他若干个哨所之间有通信联系。

信使负责在哨所之间传递信息,当然,这是要花费一定时间的(以天为单位)。

指挥部设在第一个哨所。

当指挥部下达一个命令后,指挥部就派出若干个信使向与指挥部相连的哨所送信。

当一个哨所接到信后,这个哨所内的信使们也以同样的方式向其他哨所送信。信在一个哨所内停留的时间可以忽略不计

直至所有 n 个哨所全部接到命令后,送信才算成功。

因为准备充足,每个哨所内都安排了足够的信使(如果一个哨所与其他 k 个哨所有通信联系的话,这个哨所内至少会配备 k 个信使)。

现在总指挥请你编一个程序,计算出完成整个送信过程最短需要多少时间。

输入格式

第 1 行有两个整数 n 和 m,中间用 1 个空格隔开,分别表示有 n 个哨所和 m 条通信线路。

第 22 至 m+1 行:每行三个整数 i、j、k,中间用 1 个空格隔开,表示第 i 个和第 j 个哨所之间存在 双向 通信线路,且这条线路要花费 k 天。

输出格式

一个整数,表示完成整个送信过程的最短时间。

如果不是所有的哨所都能收到信,就输出 -1。

数据范围

1 ≤ n ≤ 100
1 ≤ m ≤ 200
1 ≤ k ≤ 1000

输入样例:

4 4
1 2 4
2 3 7
2 4 1
3 4 6

输出样例:

11

思路

        该问题就是确定每个点距离点1的最短距离,然后在所有点中找到距离最大的点,然后输出,如果无法到达则输出-1。

        Dijkstra是在没有确定最小距离的点的集合中寻找距离最小的点。

代码 

#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> PII;
const int N = 110, M = 410;
int n,m;
int h[N],ne[M],e[M],w[M],idx;
int dist[N];
bool st[N];void add(int a,int b,int c)
{ne[idx] = h[a],e[idx] = b, w[idx] = c,h[a] = idx ++;
}void dijkstra()
{memset(dist,0x3f,sizeof dist);priority_queue<PII,vector<PII>,greater<>> heap;dist[1] = 0;heap.emplace(0,1);while(!heap.empty()){auto t = heap.top();heap.pop();int u = t.second;if(st[u]) continue;st[u] = true;for(int i = h[u]; ~i; i = ne[i]){int j = e[i];if(dist[j] > dist[u] + w[i]){dist[j] = dist[u] + w[i];heap.emplace(dist[j],j);}}}
}int main()
{memset(h,-1,sizeof h);cin >> n >> m;while(m --){int a,b,c;cin >> a >> b >> c;add(a,b,c);add(b,a,c);}dijkstra();int maxx = 0;for(int i = 1; i <= n; i ++) maxx = max(maxx,dist[i]);if(maxx == 0x3f3f3f3f) cout << "-1" << endl;else cout << maxx << endl;
}
难度:简单
时/空限制:1s / 64MB
总通过数:11412
总尝试数:20492
来源:《信息学奥赛一本通》
算法标签

单源最短路icon-default.png?t=N7T8https://www.acwing.com/problem/search/1/?search_content=%E5%8D%95%E6%BA%90%E6%9C%80%E7%9F%AD%E8%B7%AF

题目来自: 1128. 信使 - AcWing题库

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

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

相关文章

硬盘重新分区怎么恢复分区之前的文件?

分区是常见的故障&#xff0c;通常由多种原因引起。一方面&#xff0c;硬盘老化或者受到损坏可能会导致分区表出现问题&#xff1b;另一方面&#xff0c;用户误操作&#xff0c;如格式化或分区不当&#xff0c;也可能导致分区丢失。针对此问题&#xff0c;解决方法包括使用专业…

代码仓库gitlab的数据迁移步骤

GitLab数据迁移的具体方法和详细操作如下&#xff1a; 备份源GitLab服务器的数据&#xff1a;你可以使用GitLab自带的备份工具进行备份&#xff0c;执行以下命令进行备份&#xff1a; sudo gitlab-rake gitlab:backup:create安装新的GitLab服务器&#xff1a;在目标服务器上安装…

# C++系列-第3章循环结构-28-累加

在线练习&#xff1a; http://noi.openjudge.cn/ https://www.luogu.com.cn/ 累加 奥运奖牌计数 题目描述 2008 2008 2008 年北京奥运会&#xff0c;A 国的运动员参与了 n n n 天的决赛项目 ( 1 ≤ n ≤ 100 ) (1 \le n \le 100) (1≤n≤100)。现在要统计一下 A 国所获得的…

虚拟机连接(与主机断开连接)U盘的按钮为灰色之解决方法

在WIN11中&#xff0c;虚拟机“连接(与主机断开连接)U盘”选项为灰色&#xff0c;解决方法如下&#xff1a; 1、关闭虚拟机电源&#xff0c;得到下面的界面&#xff1a; 2、根据上述提示&#xff0c;找到虚拟机所在磁盘 3、配置文件属性见下图&#xff1a; 4、使用记事本打开…

JVM工作原理与实战(十四):JDK9及之后的类加载器

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、JDK8及之前的类加载器 二、JDK9及之后的类加载器 1.启动类加载器 2.平台类加载器&#xff08;扩展类加载器&#xff09; 总结 前言 JVM作为Java程序的运行环境&#xff0c;其负…

华为OD机试 - 最长子字符串的长度(二)(Java JS Python C)

题目描述 给你一个字符串 s,字符串 s 首尾相连成一个环形,请你在环中找出 l、o、x 字符都恰好出现了偶数次最长子字符串的长度。 输入描述 输入是一串小写的字母组成的字符串 输出描述 输出是一个整数 备注 1 ≤ s.length ≤ 5 * 10^5s 只包含小写英文字母用例 输入alolob…

《设计模式的艺术》笔记 - 简单工厂模式

介绍 定义一个工厂类&#xff0c;它可以根据参数的不同返回不同类的实例&#xff0c;被创建的实例通常都具有相同的父类。因为在简单工厂模式中用于创建实例的方法是静态方法&#xff0c;因此简单工厂模式又被称为静态工厂方法模式&#xff0c;属于类创建型模式 实现 class Pr…

Nginx——基础配置

和大多数软件一样&#xff0c;Nginx也有自己的配置文件&#xff0c;但它又有很多与众不同的地方&#xff0c;本帖就来揭开Nginx基础配置的面纱。 1、Nginx指令和指令块 了解指令和指令块有助于大家了解配置的上下文&#xff0c;下面是一个配置模板示例&#xff1a; 在这个配…

ElasticSearch 7.x 版本使用 BulkProcessor 实现批量添加数据

ElasticSearch 1、ElasticSearch学习随笔之基础介绍 2、ElasticSearch学习随笔之简单操作 3、ElasticSearch学习随笔之java api 操作 4、ElasticSearch学习随笔之SpringBoot Starter 操作 5、ElasticSearch学习随笔之嵌套操作 6、ElasticSearch学习随笔之分词算法 7、ElasticS…

使用numpy处理图片——缩放图片

缩放图片是让图片丢失部分像素&#xff0c;从而导致图片失真。一种比较简单的方法就是抽取法。比如如果我们要将照片在宽度上缩小50%&#xff0c;则可以在第二维度上每隔2个像素取一个像素来保存&#xff1b;类似的&#xff0c;如果我们希望在高度上缩小50%&#xff0c;则可以在…

AUTO SEG-LOSS SEARCHING METRIC SURROGATES FOR SEMANTIC SEGMENTATION

AUTO SEG-LOSS: 搜索度量替代语义分割 论文链接&#xff1a;https://arxiv.org/abs/2010.07930 项目链接&#xff1a;https://github.com/fundamentalvision/Auto-Seg-Loss ABSTRACT 设计合适的损失函数是训练深度网络的关键。特别是在语义分割领域&#xff0c;针对不同的场…

腾讯云服务器建站教程——2024更新部署网站教程

使用腾讯云服务器搭建网站全流程&#xff0c;包括轻量应用服务器和云服务器CVM建站教程&#xff0c;轻量可以使用应用镜像一键建站&#xff0c;云服务器CVM可以通过安装宝塔面板的方式来搭建网站&#xff0c;腾讯云服务器网txyfwq.com分享使用腾讯云服务器建站教程&#xff0c;…

【复现】Spider-Flow RCE漏洞(CVE-2024-0195)_16

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 Spider Flow 是一个高度灵活可配置的爬虫平台&#xff0c;用户无需编写代码&#xff0c;以流程图的方式&#xff0c;即可实现爬虫…

基于SSM的电脑测评系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的电脑测评系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring Spri…

Codeforces Round 911 (Div. 2) C. Anji‘s Binary Tree (DFS + 树)

题目 思路: dfs树的每一条到叶子的路径, 并计算路径中需要修改的个数, 在这些个数中取最小值 注意: 本题中的树是以每个结点的左右孩子是什么的形式给出的, 所以可以不用建树, 只需保存每个结点的左右孩子是什么即可。 代码&#xff1a; #include<bits/stdc.h> using…

Docker登录MySQL,密码正确却提示密码错误

当我输入了正确的MySQL密码的时候确提示我密码错误&#xff1a; ERROR 1045 (28000): Access denied for user rootlocalhost (using password: YES) docker run --name mysql_master \ -e MYSQL_ROOT_PASSWORD123123 \ -v /root/mysql_master/data:/var/lib/mysql \ -v /root…

Postgresql常见(花式)操作完全示例

案例说明 将Excel数据导入Postgresql&#xff0c;并实现常见统计&#xff08;数据示例如下&#xff09; 导入Excel数据到数据库 使用Navicat工具连接数据库&#xff0c;使用导入功能可直接导入&#xff0c;此处不做过多介绍&#xff0c;详细操作请看下图&#xff1a; 点击“下…

点云从入门到精通技术详解100篇-基于多传感器融合的智能汽车 环境感知(下)

目录 基于激光雷达点云的目标检测 4.1 点云神经网络检测模型 4.2 点云预处理

SCI一区级 | Matlab实现RIME-CNN-BiLSTM-Mutilhead-Attention多变量多步时序预测

SCI一区级 | Matlab实现RIME-CNN-BiLSTM-Mutilhead-Attention多变量多步时序预测 目录 SCI一区级 | Matlab实现RIME-CNN-BiLSTM-Mutilhead-Attention多变量多步时序预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现RIME-CNN-BiLSTM-Mutilhead-Attention多…

npx和npm有什么区别,包管理器yarn的使用方法,node的版本管理工具nvm使用方法

文章目录 一、npx介绍及使用1、npx 是什么2、npx 会把远端的包下载到本地吗?3、npx 执行完成之后&#xff0c; 下载的包是否会被删除&#xff1f;4、npx和npm的区别 二、yarn介绍及使用1、Yarn是什么&#xff1f;2、Yarn的常见场景&#xff1a;3、Yarn常用命令 三、nvm介绍及使…