【代码随想录算法训练营第六十五天|卡码网94.城市间货物运输IIIIII】

文章目录

  • 94.城市间货物运输I
    • SPFA(bellman_ford队列优化)
    • Bellman_ford判断负权回路
  • 96.城市间货物运输III
    • Bellman_ford

94.城市间货物运输I

SPFA(bellman_ford队列优化)

在bellman_ford的基础上,在每次松弛的时候,只有和前面的结点相连的边的松弛才是有效的,因此可以引入一个队列存储已经访问过的结点,针对连接这些结点的边进行松弛。

from collections import deque
n, m = map(int, input().split())
grid = [[] for _ in range(n+1)]
for i in range(m):s, t, v = map(int, input().split())grid[s].append([t, v])
start = 1
end = n 
minDist = [float('inf')] * (n + 1)
minDist[1] = 0
queue = deque()
queue.append(start)
while queue:cur = queue.popleft()for edge in grid[cur]:if minDist[edge[0]] > minDist[cur] + edge[1]:minDist[edge[0]] = minDist[cur] + edge[1]queue.append(edge[0])
if minDist[end]!=float('inf'):print(minDist[end])
else:print('unconnected')

Bellman_ford判断负权回路

如果没有负权回路,第n次更新所有minDist都不会变,但是存在负权回路的话就会变,所以进行n次的b_f,最后一步看是否有变化,有的话说明存在负权重回路。

n, m = map(int, input().split())
grid = []
for i in range(m):s, t, v = map(int, input().split())grid.append([s, t, v])
start = 1
end = n 
minDist = [float('inf')] * (n + 1)
minDist[1] = 0
updated = False
for i in range(n):for edge in grid:if minDist[edge[0]]!=float('inf') and minDist[edge[1]] > minDist[edge[0]] + edge[2]:if i < n - 1:minDist[edge[1]] = minDist[edge[0]] + edge[2]else:updated = True
if updated:print('circle')
elif minDist[end]!=float('inf'):print(minDist[end])
else:print('unconnected')

96.城市间货物运输III

Bellman_ford

限制经过K个城市那就是限制最多k+1条边,Bellman_ford算法松弛k+1次即可。还有一个要注意的是,正常B_F松弛在同一组松弛的时候,前一个松弛的边是可能对后续的边产生影响的,正常B_F是无所谓因为可以超过n-1次也不影响,但是在这里就需要注意,用来判断是否要更新距离是用上一次松弛完的结果来判断,但是松弛结果更新在这一次的结果中。

n, m = map(int, input().split())
grid = []
for i in range(m):s, t, v = map(int, input().split())grid.append([s, t, v])
src, dst, k = map(int, input().split())start = src
end = dst
minDist = [float('inf')] * (n + 1)
minDist[start] = 0
minDist_last = [float('inf')] * (n + 1)
for i in range(k+1):minDist_last = minDistfor edge in grid:if minDist_last[edge[0]]!=float('inf') and minDist_last[edge[1]] > minDist_last[edge[0]] + edge[2]:minDist[edge[1]] = minDist[edge[0]] + edge[2]if minDist[end]!=float('inf'):print(minDist[end])
else:print('unreachable')

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

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

相关文章

linux权限深度解析——探索原理

前言&#xff1a;本节内容主要讲述的是linux权限相关的内容&#xff0c; linux的权限如果使用root账号是感受不到的&#xff0c; 所以我们要使用普通账号对本节相关内容进行学习&#xff0c;以及一些实验的测试。 然后&#xff0c; 通过linux权限的学习我们可以知道为什么有时候…

合合TextIn - 大模型加速器

TextIn是合合信息旗下的智能文档处理平台&#xff0c;在智能文字识别领域深耕17年&#xff0c;致力于图像处理、模式识别、神经网络、深度学习、STR、NLP、知识图谱等人工智能领域研究。凭借行业领先的技术实力&#xff0c;为扫描全能王、名片全能王等智能文字识别产品提供强大…

使用GPT-4和ChatGPT构建应用项目

文章目录 项目1:构建新闻稿生成器项目2:YouTube视频摘要项目3:打造《塞尔达传说:旷野之息》专家项目4:语音控制项目1:构建新闻稿生成器 GPT-4和ChatGPT等LLM专用于生成文本。我们可以使用GPT-4和ChatGPT在各种场景中生成文本,举例如下。 电子邮件合同或正式文档创意写作…

SpringBoot相关

SpringBoot 1. what springboot也是spring公司开发的一款框架。为了简化spring项目的初始化搭建的。 spring项目搭建的缺点&#xff1a; 配置麻烦依赖繁多tomcat启动慢 2 .springboot的特点(why) 自动配置 springboot的自动配置是一个运行时(更准确地说&#xff0c;是应用程…

关于斯坦福TTT,大家难道没啥可唠的嘛~?

TTT与transformer也好或manba也好它们之间背后的本质思想&#xff0c;表面上来看是对上下文进行状态表征压缩&#xff0c;再细想来看&#xff0c;均是一种对输入自身结构的一种线性建模变换&#xff0c;不过三者间所采用线性建模方法和策略各有不同和优劣&#xff0c;而TTT在这…

加载预训练后的深度网络,使用pytorch框架

用 PyTorch 框架加载预训练模型并进行预测的过程包括以下几个步骤&#xff1a;加载模型、进行图像预处理、进行前向传播以及处理预测结果。以下是一个完整的示例&#xff0c;展示了如何使用预训练的 ResNet50 模型在一张图像上进行预测。 import torch from torchvision impor…

【C++ Primer Plus】学习笔记1

文章目录 前言一、预备知识二、基本语法1.main函数2.有返回值的函数C程序应当为程序中使用的每个函数提供原型3.自定义函数 总结 前言 一直没系统学过C&#xff0c;最近接触了一段时间Java发现还是不太喜欢&#xff0c;所以转向C开发了qaq。因为学过C语言不算零基础了&#xf…

软件杂志软件杂志社软件编辑部2024年第4期目录

基金项目论文 “互联网”环境下智慧教育支撑平台的架构研究 黄孔曜; 1-3 基于机器学习的Web网络爬虫算法优化研究 刘俊培;贾继洋;班岚;迟欢;孙沛叶; 4-7 基于Ant Design Pro的物流系统前端开发与用户体验优化研究 王菊雅; 8-10《软件》投稿&#xff1a;cnqikantg12…

JavaScript 数组常用方法详细教程

在 JavaScript 中&#xff0c;数组是一种非常重要的数据结构&#xff0c;用于存储多个值。JS 提供了许多内置方法来操作数组&#xff0c;使得数据处理变得更加简单和高效。本文将详细介绍一些常用的 JavaScript 数组方法&#xff0c;这些不但是平时开发常用的方法&#xff0c;也…

【建议收藏】一万字图文并茂,终于有人把GPT的玩法整理全了

1. 学生常用 1.1 辅导作业、写作业 打数学建模和写期末作业~ Openai GPT-4o 模型从 2024 年 5 月发布以来&#xff0c;作为各项性能评测综合第一的 GPT。 对于法律类&#xff0c;语言类的作业&#xff0c;随意秒杀了&#xff01;&#xff01; 所以我决定让他做一道高等数学…

抽象代数精解【1】

文章目录 群概述一、群的定义二、群的基本性质三、群的分类与例子四、群的应用 难点与例子 参考文献 群 概述 下面由文心一言生成 数学中的“群”&#xff08;group&#xff09;是一个重要的代数结构概念&#xff0c;它起源于对方程解析解的探索&#xff0c;由伽罗瓦&#xff…

keepalived+nginx实现高可用

1. keepalived需要了解的知识 1.1 业务场景&#xff1a; 如果我们有个网站&#xff0c;最开始只有一台服务器对用户提供服务&#xff0c;业务架构图如下&#xff1a; 当业务量增大时&#xff0c;这台服务器支撑不了那么大的流量&#xff0c;随时会出现宕机的风险&#xff0c;…

Dr4g0nb4ll靶机

信息收集 使用arp-scan生成网络接口地址&#xff0c;查看ip 输入命令&#xff1a; arp-scan -lnmap扫描端口开放 TCP 输入命令&#xff1a; nmap --min-rate 10000 -p- 192.168.187.184 //以最低10000的发包速率扫描全部端口可以看到目标只开放http的22和80端口 UDP …

嵌入式应用开发之代码整洁之道二

前言&#xff1a;本系列教程旨在如何将自己的代码写的整洁&#xff0c;同时本系列参考 正点原子 &#xff0c; C代码整洁之道&#xff0c;编写可读的代码艺术。 #函数的应用规范 #函数作用的功能 函数功能&#xff1a;函数应该只做一件事&#xff0c;做好这件事&#xff0c;只…

鸿蒙Harmony--文本组件Text属性详解

金樽清酒斗十千&#xff0c;玉盘珍羞直万钱。 停杯投箸不能食&#xff0c;拔剑四顾心茫然。 欲渡黄河冰塞川&#xff0c;将登太行雪满山。 闲来垂钓碧溪上&#xff0c;忽复乘舟梦日边。 行路难&#xff0c;行路难&#xff0c;多歧路&#xff0c;今安在&#xff1f; 长风破浪会有…

2024最新国际版抖音TikTok安装教程,免root免拔卡安卓+iOS,附全套安装工具!

我是阿星&#xff0c;今天给大家带来是2024年最新TikTok国际版抖音的下载和安装教程&#xff0c;而且还是免root免拔卡的那种&#xff0c;安卓和iOS都能用哦&#xff01;由于某些原因&#xff0c;国内用户并不能使用TikTok。今天阿星就教一下大家怎么安装TikTok。 TikTok在全球…

张爱华:身残志坚谱写人间大爱 推己及人彰显巾帼风采

张爱华&#xff0c;女&#xff0c;1963年2月出生&#xff0c;响水县聚贤养老协会会长、响水县小尖镇爱华老年公寓院长。张爱华因患小儿麻痹症导致下肢重度残疾&#xff0c;但她身残志坚&#xff0c;通过创办服装厂慢慢走上致富之路。2011年&#xff0c;她先后筹资、贷款600多万…

vue 项目代码架构

Vue项目的代码架构通常遵循一定的组织结构和约定&#xff0c;以提高项目的可维护性、可扩展性和可读性。以下是对Vue项目代码架构的详细解析&#xff1a; 一、项目目录结构 Vue项目的目录结构通常包括以下几个关键部分&#xff1a; 根目录&#xff1a; package.json&#x…

Linux下解压.tar.gz文件

.tar.gz 是一种常用的压缩包格式&#xff0c;尤其在Unix、Linux以及macOS系统中非常普遍。这个格式结合了两种不同的功能&#xff1a; Tar (.tar): “Tar” 是“Tape Archive”的缩写&#xff0c;最初是为了将数据备份到磁带上而设计的。Tar命令可以将多个文件和目录打包成一个…

UART串口通信实验

一.通信种类 1.1按照数据通信方式 1.1.1串行通信 优点&#xff1a;占用的引脚少&#xff0c;成本低 缺点&#xff1a;传输速度慢 适用场合&#xff1a;长距离、低速率的通信场合 1.1.2并行通信 优点&#xff1a;传输速率快 缺点&#xff1a;占用引脚多&#xff0c;成本…