当前位置: 首页 > news >正文

代码随想录算法训练营第六十三天| 图论9—卡码网47. 参加科学大会,94. 城市间货物运输 I

每日被新算法方式轰炸的一天,今天是dijkstra(堆优化版)以及Bellman_ford ,尝试理解中,属于是只能照着代码大概说一下在干嘛。

47. 参加科学大会

https://kamacoder.com/problempage.php?pid=1047

dijkstra(堆优化版),主要区别用gpt总结了一下

  1. 第一步,选源点到哪个节点近且该节点未被访问过
  2. 第二步,该最近节点被标记访问过
  3. 第三步,更新非访问节点到源点的距离(即更新minDist数组)

其中核心部分主要是最小堆来从当前所有候选路径中找出距离起点最近的节点,更新它所连接的其他节点的最短路径值。从堆里取出当前距离起点最近的节点,并尝试用它来更新所有邻接点的距离,直到终点被访问或堆为空。也就是中间while函数的意义,其余代码主要是构建堆以及处理输入。

import heapqclass Edge:def __init__(self, to, val):self.to = toself.val = valdef dijkstra(n, m, edges, start, end):grid = [[] for _ in range(n + 1)]for p1, p2, val in edges:grid[p1].append(Edge(p2, val))minDist = [float('inf')] * (n + 1)visited = [False] * (n + 1)pq = []heapq.heappush(pq, (0, start))minDist[start] = 0while pq:cur_dist, cur_node = heapq.heappop(pq)if visited[cur_node]:continuevisited[cur_node] = Truefor edge in grid[cur_node]:if not visited[edge.to] and cur_dist + edge.val < minDist[edge.to]:minDist[edge.to] = cur_dist + edge.valheapq.heappush(pq, (minDist[edge.to], edge.to))return -1 if minDist[end] == float('inf') else minDist[end]# 输入
n, m = map(int, input().split())
edges = [tuple(map(int, input().split())) for _ in range(m)]
start = 1  # 起点
end = n    # 终点# 运行算法并输出结果
result = dijkstra(n, m, edges, start, end)
print(result)

94. 城市间货物运输 I

https://kamacoder.com/problempage.php?pid=1152

最主要区别在于Bellman_ford能解决负数的权重的问题,而dijkstra不行,

Bellman_ford算法的核心思想是 对所有边进行松弛n-1次操作(n为节点数量),从而求得目标最短路。

然后是该算法的核心思想:松弛操作

  • 外层循环最多执行 n-1 次(这是 Bellman-Ford 的核心步骤)

  • 每次遍历所有边,尝试更新目标点的最短距离(即“松弛”操作)

  • 如果一轮下来没有任何更新,说明最短路径已稳定,提前退出循环(优化)

def main():n, m = map(int, input().strip().split())edges = []for _ in range(m):src, dest, weight = map(int, input().strip().split())edges.append([src, dest, weight])minDist = [float("inf")] * (n + 1)minDist[1] = 0  # 起点处距离为0for i in range(1, n):updated = Falsefor src, dest, weight in edges:if minDist[src] != float("inf") and minDist[src] + weight < minDist[dest]:minDist[dest] = minDist[src] + weightupdated = Trueif not updated:  # 若边不再更新,即停止回圈breakif minDist[-1] == float("inf"):  # 返还终点权重return "unconnected"return minDist[-1]if __name__ == "__main__":print(main())

相关文章:

代码随想录算法训练营第六十三天| 图论9—卡码网47. 参加科学大会,94. 城市间货物运输 I

每日被新算法方式轰炸的一天&#xff0c;今天是dijkstra&#xff08;堆优化版&#xff09;以及Bellman_ford &#xff0c;尝试理解中&#xff0c;属于是只能照着代码大概说一下在干嘛。 47. 参加科学大会 https://kamacoder.com/problempage.php?pid1047 dijkstra&#xff08…...

RAG之大规模解析 PDF 文档全流程实战

PDF 文档在商业、学术和政府领域无处不在,蕴含着大量宝贵信息。然而,从 PDF 中提取结构化数据却面临着独特的挑战,尤其是在处理数千甚至数百万个文档时。本指南探讨了大规模解析 PDF 的策略和工具。 PDF解析挑战 PDF 的设计初衷是为了提供一致的视觉呈现,而非数据提取。这…...

uart16550详细说明

一、介绍 uart16550 ip core异步串行通信IP连接高性能的微控制器总线AXI,并为异步串行通信提供了 控制接口。软核设计连接了axilite接口。 二、特性 1.axilite接口用于寄存器访问和数据传输 2.16650串口和16450串口的软件和硬件寄存器都是兼容的 3.默认的core配置参数&#xf…...

Docker 环境安装(2025最新版)

Docker在主流的操作系统和云平台上都可以使用&#xff0c;包括Linux操作 系统&#xff08;如Ubuntu、 Debian、Rocky、Redhat等&#xff09;、MacOS操作系统和 Windows操作系统&#xff0c;以及AWS等云平 台。 Docker官网&#xff1a; https://docs.docker.com/ 配置宿主机网…...

Comparator不满足自反性错误,Comparison method violates its general contract

APP运行退出&#xff0c;跟踪信息 java.lang.IllegalArgumentException: Comparison method violates its general contract! Collections.sort(idxsList);//按score升序排列 查看idxs类 public int compareTo(Idxs o) { //重写compareTo方法 return (int) (this.g…...

[Java实战]Spring Boot 3 整合 Apache Shiro(二十一)

[Java实战]Spring Boot 3 整合 Apache Shiro&#xff08;二十一&#xff09; 引言 在复杂的业务系统中&#xff0c;安全控制&#xff08;认证、授权、加密&#xff09;是核心需求。相比于 Spring Security 的重量级设计&#xff0c;Apache Shiro 凭借其简洁的 API 和灵活的扩…...

如何界定合法收集数据?

首席数据官高鹏律师团队 在当今数字化时代&#xff0c;数据的价值日益凸显&#xff0c;而合法收集数据成为了企业、机构以及各类组织必须严守的关键准则。作为律师&#xff0c;深入理解并准确界定合法收集数据的范畴&#xff0c;对于保障各方权益、维护法律秩序至关重要。 一…...

Flask+HTML+Jquery 文件上传下载

HTML 代码&#xff1a; <div id"loadingIndicator" style"display:none;"><div class"spinner"></div> </div> <!-- 请求过程中转圈圈 --> <form action"" method"post" enctype"m…...

MapReduce打包运行

&#xff08;一&#xff09;maven打包 MapReduce是一个分布式运算程序的编程框架&#xff0c;是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序&#xff08;例如&#xff1a;jar…...

国产化Word处理控件Spire.Doc教程:如何使用 C# 从 Word 中提取图片

通过编程方式从 Word 文档中提取图片&#xff0c;可以用于自动化文档处理任务。E-iceblue旗下Spire系列产品是国产文档处理领域的优秀产品&#xff0c;支持国产化&#xff0c;帮助企业高效构建文档处理的应用程序。本文将演示如何使用 C# 和 Spire.Doc for .NET 库从 Word 文件…...

07 mysql之DQL

一、什么是DQL DQL 是 SQL 的一部分,专门用于查询数据。核心命令是 SELECT,是最常用的命令,支持: 简单查询条件过滤排序与分页多表连接聚合统计子查询与复杂逻辑二、基础查询语法 SELECT 字段1, 字段2, ... FROM 表名 WHERE 条件表达式 GROUP BY 分组字段 HAVING 分组条件…...

spark-standalone

一、定义&#xff1a;Standalone 模式是一种独立的集群部署模式&#xff0c;自带完整服务&#xff0c;可单独部署到一个集群中&#xff0c;无需依赖任何其他资源管理系统。 二、配置步骤 1.和前面一样拉到hadoop101的/opt/module这个目录里面。 2.压缩 3.重命名为spark-sta…...

运行Spark程序-在shell中运行 --SparkConf 和 SparkContext

SparkConf 类用于配置 Spark 应用程序的各种参数。通过 SparkConf 类&#xff0c;你可以设置应用程序的名称、运行模式&#xff08;如本地模式、集群模式&#xff09;、资源分配&#xff08;如内存、CPU 核心数&#xff09;等。主要作用配置应用程序参数&#xff1a;可以设置 S…...

分割任务 - 数据增强

语义分割 - FCN &#xff1a; 数据预处理/数据增强 算法源码实例 base_size520 crop_size480 flip_prob0.5if train_val train:self.transforms transforms.Compose([transforms.RandomResize(int(base_size*0.5), int(base_size*2)),transforms.RandomHorizontalFlip(flip_…...

基于C#+MySQL实现(WinForm)企业设备使用信息管理系统

企业设备使用信息管理系统 引言 企业的设备管理在企业的生产制造和管理过程之中意义比较重大&#xff0c;明确企业的设备的产权和维护成本对于企业的成本控制和财务管理之中起到了重要的作用。随着市场竞争的加剧&#xff0c;现代企业所处的市场环境发生了深刻的变革&#xf…...

JavaScript异步编程 Async/Await 使用详解:从原理到最佳实践

&#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Micro麦可乐的博客 &#x1f425;《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程&#xff0c;入门到实战 &#x1f33a;《RabbitMQ》…...

Babylon.js学习之路《四、Babylon.js 中的相机(Camera)与视角控制》

文章目录 1. 引言&#xff1a;为什么相机是 3D 场景的“眼睛”&#xff1f;1.1 相机的核心作用1.2 常见相机类型概览 2. 相机基础参数解析2.1 通用属性2.2 相机坐标系 3. 详解常用相机类型3.1 自由相机&#xff08;FreeCamera&#xff09;3.2 弧形旋转相机&#xff08;ArcRotat…...

MCP Server多节点滚动升级一致性治理

飞书云文档原链接地址&#xff1a;https://ik3te1knhq.feishu.cn/wiki/W8ctwG2sAiPkrXkpl7ocP0g0njf [!TIP] MCP Server 多节点部署时&#xff0c;滚动发布&#xff0c;MCP Client 侧使用的 Client 连接保证使用的是最新的工具配置信息 后续推进&#xff1a;按比例使用旧、新实…...

多线程(二)

今天先来了解一个上一期的遗留概念 —— 前台线程与后台线程 一 . 前台线程与后台线程 大家应该多多少少都听过酒桌文化&#xff0c;咱们平常吃饭&#xff0c;座位次序是没有那么多讲究的&#xff0c;但是在跟领导吃饭&#xff0c;或者出席宴会和一些重要场所的饭局时&#…...

2025年,大模型LLM还有哪些可研究的方向?

近两年LLM在学术界与工业界的发展大家都有目共睹。到了今年&#xff0c;以预训练LLM为代表的大模型PK上半场已然结束&#xff0c;接下来就要进入下半场大模型2.0时代了。 那么在这新赛道&#xff0c;关于大模型我们还有什么可做的创新&#xff1f;要知道&#xff0c;如今的大模…...

VS打断点调试,无法命中断点或断点失效,解决方法

1.打开需要打断点的模块&#xff0c;点击属性&#xff0c;将C/C常规的调试信息格式改为程序数据库&#xff08;/Zi&#xff09; 2.将C/C的优化禁用&#xff08;/Od&#xff09; 3.将链接器中的生成调试信息改为生成调试信息&#xff08;/DEBUG&#xff09; 注&#xff1a;如果需…...

ELF文件详解

ELF 文件不仅仅是一个格式&#xff0c;它是 Linux 世界中程序的"灵魂容器"&#xff0c;承载着程序从编译到执行的整个生命周期。 今天咱们来聊一个看起来高深&#xff0c;实际上理解起来其实挺简单的话题—— ELF 文件。 不知道你有没有想过&#xff1a;我们敲下./…...

【学习笔记】Shell编程---流程控制语句

最近学了好多个流程控制语句&#xff0c;都有点混乱了&#xff0c;赶紧先把各种用法记录下来&#xff01; if 语句 语法格式&#xff1a; if 条件测试命令串 then 条件为真时执行的命令 else 条件为假时执行的命令 fi 以关键字if开头&#xff0c;后跟条件测试表达式&…...

TensorFlow 常见使用场景及开源项目实例

TensorFlow 常见使用场景及开源项目实例 摘要 本文详细介绍了 TensorFlow 在多个领域的典型应用及其对应的开源项目案例。涵盖了图像处理、自然语言处理、语音音频处理、推荐系统与时间序列预测、移动端与边缘计算以及生成式模型与创意应用等多方面内容&#xff0c;列举了大量…...

王炸组合!STL-VMD二次分解 + Informer-LSTM 并行预测模型

往期精彩内容&#xff1a; 单步预测-风速预测模型代码全家桶-CSDN博客 半天入门&#xff01;锂电池剩余寿命预测&#xff08;Python&#xff09;-CSDN博客 超强预测模型&#xff1a;二次分解-组合预测-CSDN博客 VMD CEEMDAN 二次分解&#xff0c;BiLSTM-Attention预测模型…...

OpenCV进阶操作:风格迁移以及DNN模块解析

文章目录 前言一、风格迁移1、风格迁移是什么&#xff1f;2、步骤1&#xff09;训练2&#xff09;迁移 二、DNN模块1、什么是DNN模块2、DNN模块特点3、流程图4、图像预处理功能 三、案例实现1、数据预处理2、加载模型 总结 前言 风格迁移&#xff08;Style Transfer&#xff0…...

使用bitNet架构

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、配置二、报错总结 前言 大型语言模型&#xff08;LLM&#xff09;面临的挑战&#xff1a;高能耗、高内存需求、部署门槛高。 微软提出 BitNet 架构&#x…...

OpenCV中的光流估计方法详解

文章目录 一、引言二、核心算法原理1. 光流法基本概念2. 算法实现步骤 三、代码实现详解1. 初始化设置2. 特征点检测3. 光流计算与轨迹绘制 四、实际应用效果五、优化方向六、结语 一、引言 在计算机视觉领域&#xff0c;运动目标跟踪是一个重要的研究方向&#xff0c;广泛应用…...

Java集合框架详解与使用场景示例

Java集合框架是Java标准库中一组用于存储和操作数据的接口和类。它提供了多种数据结构&#xff0c;每种数据结构都有其特定的用途和性能特点。在本文中&#xff0c;我们将详细介绍Java集合框架的主要组成部分&#xff1a;List、Set和Queue&#xff0c;并通过代码示例展示它们的…...

多模态融合【十九】——MRFS: Mutually Reinforcing Image Fusion and Segmentation

目录 一.摘要 二.Introduction 三. 背景与动机 四.方法 4.1. 概述 4.2. IGM-Att模块 4.3. PC-Att模块 4.4. 任务头 五.实验 5.1. 数据集与实现细节 5.2. 语义分割 5.3. 图像融合 5.4. 消融研究 5.5. IGM-Att和PC-Att的应用增益 5.6. 复杂度讨论 5.7. 目标检测的…...

音频转文字-在线工具包及使用记录

资料来源&#xff1a;https://zhuanlan.zhihu.com/p/269603431&#xff08;多种方案&#xff09; 视频教程&#xff1a;https://www.youtube.com/watch?vL1H5ov4WTBg https://github.com/openai/whisper // 创建虚拟环境 python -m venv myvnev// 激活虚拟环境 source myvne…...

集合-进阶

Collection collection的遍历方式 迭代器遍历 不依赖索引 import java.util.ArrayList; import java.util.Collection; import java.util.Iterator;public class mycollection {public static void main(String[] args) {//1.创建集合并添加元素Collection<String> co…...

【阿里云】阿里云 Ubuntu 服务器无法更新 systemd(Operation not permitted)的解决方法

零、前言 目前正在使用的Ubuntu服务器中&#xff0c;仅阿里云&#xff08;不止一台&#xff09;出现了这个问题&#xff0c;因此我判定是阿里云服务器独有的问题。如果你的服务器提供商不是阿里云&#xff0c;那么这篇文章可能对你没有帮助。 如果已经因为升级错误导致依赖冲突…...

wpf DataGrid 行选择 命令绑定

在WPF中实现DataGrid行选择与命令绑定的MVVM模式,可通过以下方式结合代码示例实现: 1. ‌基础绑定与命令触发(SelectionChanged事件绑定)‌ 通过Interaction.Triggers捕获SelectionChanged事件,并绑定到ViewModel中的命令: <DataGrid ItemsSource="{Binding I…...

【认知思维】验证性偏差:认知陷阱的识别与克服

什么是验证性偏差 验证性偏差&#xff08;Confirmation Bias&#xff09;是人类认知中最普遍、最根深蒂固的心理现象之一&#xff0c;指的是人们倾向于寻找、解释、偏爱和回忆那些能够确认自己已有信念或假设的信息&#xff0c;同时忽视或贬低与之相矛盾的证据。这种认知偏差影…...

大容量存储的高性能 T-BOX 方案对智能网联汽车的支撑

在智能网联汽车快速发展的当下&#xff0c;车载 T-BOX&#xff08;Telematics Box&#xff09;作为车辆与云端互联的核心枢纽&#xff0c;其性能和可靠性直接决定了用户体验的上限。米客方德&#xff08;MK&#xff09;推出的基于 STM32H7RX 主控芯片与 MKDV4GIL-AST&#xff0…...

Linux 内核网络协议栈:从 Socket 类型到协议注册的深度解析

Linux 内核的网络协议栈是一个复杂而高效的体系,涉及多层次的协议处理与数据流转。本文通过分析核心数据结构(如 inetsw 数组、sock_type 枚举)和关键函数(如 inet_add_protocol),深入探讨其工作原理与设计哲学。 一、Socket 类型与 sock_type 枚举 1.1 Socket 类型的定…...

vim,gcc/g++,makefile,cmake

一、vim&#xff1a;你的小帮手——文本编辑器 它是干嘛的&#xff1f; 想象你的代码就像是写在一本“程序的笔记本”里&#xff0c;vim就是一个超级厉害的“数字笔记本”或“文字编辑器”。 它有什么用&#xff1f; 编写代码&#xff1a;编辑、修改你的源代码代码高亮&…...

解决 CentOS 7 镜像源无法访问的问题

在国内使用 CentOS 系统时&#xff0c;经常会遇到镜像源无法访问或者下载速度慢的问题。尤其是默认的 CentOS 镜像源通常是国外的&#xff0c;如果你的网络环境无法直接访问国外服务器&#xff0c;就会出现无法下载包的情况。本文将介绍如何修改 CentOS 7 的镜像源为国内镜像源…...

“傅里叶变换算法”来检测货物外形损坏

“傅里叶变换算法”来检测货物外形损坏 要使用傅里叶变换算法来检测货物外形损坏&#xff0c;首先需要理解基本概念。傅里叶变换是一种数学变换&#xff0c;用于将信号从时域&#xff08;或空间域&#xff09;转换到频域。在图像处理中&#xff0c;二维傅里叶变换可以用来分析…...

python打卡day24

可迭代对象、OS模块 知识点回顾&#xff1a; 元组可迭代对象os模块 作业&#xff1a;对自己电脑的不同文件夹利用今天学到的知识操作下&#xff0c;理解下os路径 1.元组 在day3的打卡内容中就介绍了元组&#xff0c;跟列表比起来就是用了圆括号&#xff0c;有序可以重复&#x…...

MapReduce 入门实战:WordCount 程序

一、引言 在大数据处理领域&#xff0c;MapReduce 是一种开创性的编程模型和处理框架&#xff0c;它使得我们能够高效地在大规模分布式系统上处理海量数据。而 WordCount 程序作为 MapReduce 的经典入门案例&#xff0c;堪称大数据领域的 “Hello World”&#xff0c;帮助无数…...

深度剖析:Vue2 项目兼容第三方库模块格式的终极解决方案

当我们为 Vue2 项目引入某些现代 JavaScript 库时&#xff0c;常常会遇到这样的报错&#xff1a; error in ./node_modules/some-lib/lib/index.mjs Cant import the named export xxx from non EcmaScript module这类问题的本质是模块格式的世纪之争 —— ES Module&#xff…...

5.11作业

拓扑图&#xff1a; 需求分析&#xff1a; 要求五台路由器的环回地址均可以相互访问 配置&#xff1a; r1 int g 0/0/0 i…...

MyBatis 批量新增与删除功能完整教程

一、功能概述 通过 MyBatis 动态 SQL 实现以下功能: 批量新增:一次性插入多条员工记录,支持自增主键回填。批量删除:根据 ID 数组一次性删除多条记录。二、代码逐行解析 1. Mapper 接口定义 // 批量新增:传入员工对象集合 void insertAll(List<Emp> empList);// …...

Spark,RDD中的行动算子

RDD中的行动算子 collect算子 格式&#xff1a;def collect(): Array[T] 参数说明&#xff1a;该算子没有参数。 并以数组的形式返回 统计个数 reduce算子 格式&#xff1a;def reduce(func: (T, T) > T): T 返回值&#xff1a;返回一个单一的值&#xff0c;其类型与…...

Linux:进程控制2

一&#xff1a;进程程序替换 1. 一旦程序替换成功&#xff0c;就去执行新代码了&#xff0c;原始代码的后半部分已经不存在了 2. exec*系列的函数&#xff0c;没有成功返回值&#xff0c;只有失败返回值-1 在程序替换的过程中&#xff0c;并没有创建新的进程&#xff0c;只是…...

Java jar包程序 启动停止脚本 shell bash

启动 启动时 可指定前缀&#xff08;名称&#xff09; start.sh #!/bin/bash # 使用时直接运行# 寻找当前目录下后缀为 .jar 的文件 #options($(find . -maxdepth 1 -type f -name "*.jar")) # 寻找当前目录下后缀为 .jar 的文件&#xff0c;并按时间倒序排序 opt…...

【Linux】进程通信 管道

&#x1f33b;个人主页&#xff1a;路飞雪吖~ &#x1f320;专栏&#xff1a;Linux 目录 一、&#x1f451;进程间通信分类 二、&#x1f451;管道 &#x1f31f;什么是管道&#xff1f; &#x1f31f;匿名管道 &#x1f389;原理&#xff1a; &#x1f525;站在文件描述…...

基于智能家居项目 解析DHT11温湿度传感器

一、模块简介 DHT11 是一款数字式温湿度传感器&#xff0c;内部集成了温度传感元件、湿度传感元件以及一个 8 位单片机芯片&#xff0c;用于采集数据和通信。。 测量范围&#xff1a;湿度 20%&#xff5e;90% RH&#xff0c;温度 0&#xff5e;50℃ 精度&#xff1a;湿度 5% …...