C++每日一练:信使,计算出完成整个送信过程最短需要多少时间

信使(图论算法) Description 战争时期,前线有n 个哨所,每个哨所可能会与其他若干个哨所之间有通信联系。信使负责 在哨所之间传递信息,当然,这是要花费一定时间的(以天为单位)。指挥部设在第一个哨所。当指挥部下达一个命令后,指挥部就派出若干个信使向与指挥部相连的哨所送信。当一个哨所接到信后,这个哨所内的信使们也以同样的方式向其他哨所送信。直至所有n个哨所全部接到命令后,送信才算成功。因为准备充足,每个哨 阅读详情

题目描述

    战争时期,前线有n个哨所,每个哨所可能会与其他若干个哨所之间有通信关系。信使负责在哨所之间传递信息,当然,这是要花费一定时间的(以天为单位)。指挥部设在第 1 个哨所。当指挥部下达一个命令后,指挥部就派出若干个信使向与指挥部相连的哨所送信。当一个哨所接到信后,这个哨所内的信使们也以同样的方式向其他哨所送信。直至所有n个哨所全部接到命令后,送信才算成功。因为准备充足,每个哨所内都安排了足够的信使(如果一个哨所与其他k个哨所有通信联系的话,这个哨所内至少会配备k个信使)。

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

输入

第一行有两个整数n和m,分别表示有n个哨所和m条通信线路。1 <= n <= 100。

第2至m+1行,每行三个整数i, j, k,表示第i个和第j个哨所之间存在通信线路,且这条线路要花费k天。

输出

一个整数,表示完成整个通信过程的最短时间。如果不是所有的哨所都能收到信,就输出 -1。

样例输入

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

样例输出

11
#include <iostream>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;
struct edge{
    int e,w;
    bool operator <(edge b) const{
        return w>b.w;
    }
}now,tmp,et,t1,t2;
int n,m,dis[500001],vis[500001];
int const inf=0x3f3f3f;
vector <edge> mp[500001];
void dijkstra(int s);
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++) mp[i].clear();
    for(int i=1;i<=m;i++){
        int u,v,w;
        cin>>u>>v>>w;
        t1.e=v;
        t1.w=w;
        t2.e=u;
        t2.w=w;
        mp[u].push_back(t1);
        mp[v].push_back(t2); 
    }
    dijkstra(1);
    for(int i=2;i<=n;i++)
        printf("%d\n",dis[i]);
    return 0;
}
void dijkstra(int s){
    memset(dis,inf,sizeof(dis));
    memset(vis,0,sizeof(vis));
    dis[s]=0;
    now.e=s;
    now.w=0;
    priority_queue<edge> q;
    q.push(now);
    while(!q.empty()){
        now=q.top();
        q.pop();
        if(vis[now.e]==1) continue;
        vis[now.e]=1;
        int len=mp[now.e].size();
        for(int i=0;i<len;i++){
            tmp=mp[now.e][i];
            if(dis[now.e]+tmp.w<dis[tmp.e]){
                dis[tmp.e]=dis[now.e]+tmp.w;
                et.e=tmp.e;
                et.w=dis[tmp.e];
                q.push(et);
            }
        }
    }
    return;
} 

【OJ每日一练】1228 - 乘方计算 文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习。一个整数,即乘方结果。题目保证最终结果的绝对值不超过1000000。一行,包含两个整数a和n。 阅读详情

相关推荐

优快云每日一练 |『生命进化书』『订班服』『c++难题-大数加法』2023-09-06

🟢 编程路上,每日一练,不断精进!🔊『生命进化书』『订班服』『c++难题-大数加法』

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3169

spfa 信使(msner)

信使(msner)时间限制: 1000 ms         内存限制: 65536 KB提交数: 509     通过数: 208 【题目描述】战争时期,前线有n个哨所,每个哨所可能会与其他若干个哨所之间有通信联系。信使负责在哨所之间传递信息,当然,这是要花费一定时间的(以天为单位)。指挥部设在第一个哨所。当指挥部下达一个命令后,指挥部就派出若干个信使向与指挥部相连的哨所送信。当一个哨所接到信后...

pxlsdz的博客 1113

优快云每日一练 |『交际圈』『鬼画符门之大师兄恋爱』『 最优利润值』2023-09-08

🟢 编程路上,每日一练,不断精进!🔊『交际圈』『鬼画符门之大师兄恋爱』『 最优利润值』

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 2966

最短路径之信使

时间限制: 1 Sec内存限制: 128 MB 提交: 50解决: 18 [提交] [状态] [讨论版] [命题人:外部导入] 题目描述 战争时期,前线有n个哨所,每个哨所可能会与其他若干个哨所之间有通信联系。信使负责在哨所之间传递信息,当然,这是要花费一定时间的(以天为单位)。指挥部设在第一个哨所。当指挥部下达一个命令后,指挥部就派出若干个信使向与指挥部相连的哨所送...

weixin_30814223的博客 360

网络信使源代码c++

网络信使源代码c++可用的,呵呵,欢迎大家下载啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

1376:信使(msner)-B.pdf

1376:信使(msner)-B 1376:信使(msner)-B 1376:信使(msner)-B

Golang每日一练(leetDay0075) 打家劫舍II、最短回文串

213. 打家劫舍 II House Robber ii🌟🌟   214. 最短回文串 Shortest Palindrome🌟🌟🌟

汉阳Hann's Home 2354

S32K3双核实战:手把手教你用EB配置CAN与CANFD(附中断/轮询代码对比)

本文详细解析了NXP S32K3双核处理器在CAN/CANFD通信开发中的实战应用。通过Elektrobit配置工具链,从双核通信架构设计到EB tresos Studio配置全流程,再到中断与轮询模式的代码实现对比,全面指导开发者优化S32K3 FlexCAN模块性能,提升汽车电子系统的通信效率与可靠性。

weixin_30955617的博客 439

C/C++每日一练(20230415) 交错字符串、最短回文串、分段函数

1. 交错字符串🌟🌟   2. 最短回文串🌟🌟   3. 分段函数计算 ※

汉阳Hann's Home 1189

Cocos Creator+微信小游戏:如何用wxDownloader实现资源动态加载与热更新

本文深入探讨了在Cocos Creator开发微信小游戏时,如何利用wxDownloader有效应对主包体积限制,实现资源的动态加载与热更新。文章详细介绍了从项目配置、资源标记到初始化加载的完整流程,并重点解析了基于MD5 Cache的缓存策略与版本控制方案,旨在帮助开发者构建稳健高效的资源管理体系,优化游戏启动速度与更新体验。

css33的专栏 822

mysql8.0安装及配置超详细教程_mysql-8.0.15-winx64

MySQL8.0配置教程, 全网最详,同时有本地mysql和小皮系统见另一篇

小诺言的博客 2万+

C/C++每日一练(20230401) 移动数组元素、好数对、数组元素的首末位置

1. 移动数组中的元素 ※   2. 好数对 ※   3. 排序数组中查找元素的首末位置🌟

汉阳Hann's Home 2465

永久关闭Windows更新的5种方法

很多家用电脑,如果系统自动更新的话,会变得越来越卡顿,且硬件型号兼容也并不完美。那么我们该如何彻底关闭Win11的自动更新呢?以下准备了5种方法,您可以根据自身实际情况选择合适的方法!

qq_43652793的博客 1万+

Golang每日一练(leetDay0061) 表列序号、阶乘后的零

171. Excel 表列序号 Excel Sheet Column Number🌟   172. 阶乘后的零 Factorial Trailing Zeroes🌟🌟

汉阳Hann's Home 1006

别再只会regress了!用Stata的csdid命令搞定多期DID的完整实操指南

本文详细介绍了如何在Stata中使用csdid命令进行多期DID分析,解决传统DID方法在交错处理场景下的局限性。通过完整的实操指南,包括环境搭建、核心语法、结果解读和高阶应用,帮助研究者更准确地评估政策效果,适用于计量经济学和实证研究领域。

weixin_30236595的博客 582

Uncaught ReferenceError: process is not defined

这个错误 Uncaught ReferenceError: process is not defined 通常出现在浏览器环境中,因为 process 是 Node.js 环境的内置对象,并不是浏览器原生支持的。因此,浏览器无法识别 process,导致该错误。在App.vue中加上以下代码就能够有效解决。

猿小白的博客 1740

Golang每日一练(leetDay0081) 基本计算器I\II Basic Calculator

224. 基本计算器 Basic Calculator🌟🌟🌟   227. 基本计算器 II Basic Calculator🌟🌟

汉阳Hann's Home 2496

dToF直方图之美_deadtime死区时间

IMX459的死区时间可以在6ns,这个时间是什么级别,车载激光雷达激光器的光脉宽一般都在4ns以上,也就是这个时间贴近去SPAD的死区时间,这就导致了pile up会非常弱,不会有太多数量的光子计数堆积,加上某些SPAD设计,对TDC有一些更深入的考量,所以不需要去校正pile up算法。Sensor层面决定了pile up的复杂程度,如果一个dToF的SPAD一致性非常好,那么pile up校正可以简单到极致,也就是一句代码的事,比如IMX611,优秀到不需要后端去考虑校正pile up。

dream it possible 1433

C/C++每日一练(20230417) 字母异位词分组、右侧小于当前元素个数、加一

1. 字母异位词分组🌟🌟   2. 计算右侧小于当前元素的个数🌟🌟🌟   3. 加一🌟

汉阳Hann's Home 1347

姿态传感器/陀螺仪之IIS2DLPC 应用驱动程序设计

* 转换为°C单位 (参考温度为25°C,灵敏度为16 LSB/°C) */

corlin6688的博客 218

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java每日一练(20230419) 二叉树的最大深度、层序遍历、最短回文串

1. 二叉树的最大深度🌟   2. 二叉树的层序遍历🌟🌟   3. 最短回文串🌟🌟🌟

汉阳Hann's Home 858

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C/C++每日一练(20230515) 区间和的个数、BST最近公共祖先、最接近元素

1. 区间和的个数🌟🌟🌟   2. 二叉搜索树的最近公共祖先🌟   3. 找最接近元素🌟🌟

汉阳Hann's Home 895

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Rust每日一练(leetDay0023) 二进制求和、左右对齐、平方根

67. 二进制求和 Add Binary🌟   68. 文本左右对齐 Text Justification🌟🌟🌟   69. x 的平方根 Sqrt x🌟

汉阳Hann's Home 964

C/C++每日一练(20230315) 数学题、杨辉三角、插入排序字符

1. 数学题 ★   2. 杨辉三角 II★   3. 插入排序字符★

汉阳Hann's Home 701

Golang每日一练(leetDay0106) 超级丑数、右侧小于当前元素的个数

313. 超级丑数 Super Ugly Number 🌟🌟   315. 计算右侧小于当前元素的个数 Count-of-smaller-numbers-after-self🌟🌟🌟

汉阳Hann's Home 1170

C/C++每日一练(20230319) 反转链表II、解码方法、擅长编码的小k

1. 反转链表 II🌟🌟   2. 解码方法🌟🌟   3. 擅长编码的小k🌟🌟🌟

汉阳Hann's Home 2954
上一篇: 需要达到什么样的水平才能找到一份看起来不错的互联网实习?
下一篇: MATLAB介绍
std86021
博客等级 码龄5年 181粉丝 250原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

std86021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值