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

代码随想录算法训练营第六十一天|Bellman_ford 队列优化算法(又名SPFA)、bellman_ford之判断负权回路

卡码网:94. 城市间货物运输 I

from collections import dequeclass Edge:def __init__(self, to, val):self.to = to  # 链接的节点self.val = val  # 边的权重def main():n, m = map(int, input().split())grid = [list() for _ in range(n + 1)]  # 初始化邻接表for _ in range(m):p1, p2, val = map(int, input().split())grid[p1].append(Edge(p2, val))  # p1 指向 p2,权值为 valstart = 1  # 起点end = n    # 终点min_dist = [float('inf')] * (n + 1)  # 存储从起点到每个节点的最短距离min_dist[start] = 0que = deque([start])  # 使用双端队列存储已访问节点is_in_queue = [False] * (n + 1)  # 标记是否在队列中while que:node = que.popleft()is_in_queue[node] = False  # 从队列中移除节点for edge in grid[node]:to = edge.tovalue = edge.valif min_dist[to] > min_dist[node] + value:  # 开始松弛min_dist[to] = min_dist[node] + valueif not is_in_queue[to]:  # 如果节点不在队列中,则加入队列que.append(to)is_in_queue[to] = Trueif min_dist[end] == float('inf'):print("unconnected")  # 不能到达终点else:print(min_dist[end])  # 打印到达终点的最短路径长度if __name__ == "__main__":main()

卡码网:95. 城市间货物运输 II

from collections import dequeclass Edge:def __init__(self, to, val):self.to = to  # 链接的节点self.val = val  # 边的权重def main():n, m = map(int, input().split())grid = [list() for _ in range(n + 1)]  # 邻接表# 将所有边保存起来for _ in range(m):p1, p2, val = map(int, input().split())grid[p1].append(Edge(p2, val))  # p1 指向 p2,权值为 valstart = 1  # 起点end = n    # 终点min_dist = [float('inf')] * (n + 1)  # 存储从起点到每个节点的最短距离min_dist[start] = 0que = deque([start])  # 使用双端队列存储已访问节点count = [0] * (n + 1)  # 记录节点加入队列几次count[start] = 1flag = Falsewhile que:node = que.popleft()for edge in grid[node]:to = edge.tovalue = edge.valif min_dist[to] > min_dist[node] + value:  # 开始松弛min_dist[to] = min_dist[node] + valueque.append(to)count[to] += 1if count[to] == n:  # 如果加入队列次数超过 n-1次 就说明该图与负权回路flag = Truebreakif flag:breakif flag:print("circle")elif min_dist[end] == float('inf'):print("unconnected")else:print(min_dist[end])if __name__ == "__main__":main()

http://www.lryc.cn/news/418907.html

相关文章:

  • ArrayList集合源码解读(二)已完结
  • 光伏逆变器、MPPT、PCS储能变流器、BMU、BCU、BDU和液冷机组
  • OpenHarmony编译
  • C语言典型例题30
  • springMVC @RestControllerAdvice注解使用方式
  • HarmonyOS鸿蒙开发岗位面试中关于组件的问题总结
  • Unity 在Editor下保存对Text组件的文本的修改
  • mysql 日志爆满,删除日志文件,定时清理日志
  • MySQL学习(19):锁
  • 【出海日记】关于 KD ,数据工具的陷阱
  • 【k8s集群部署篇】在openEuler环境下部署多master高可用kubernetes集群详细教程(V1.30版本)
  • 数据结构:链表经典算法OJ题
  • 【线性代数】【二】2.2 极大线性无关组与向量空间的基
  • OD C卷 - CPU算力分配
  • matlab实现红绿灯识别
  • base64 转 pdf
  • vue2项目微信小程序的tabs切换效果
  • WPF动画的使用
  • 跑腿代购app系统源码开发及功能分析
  • mysql数据库:字符串函数
  • C语言实现游戏2048(超详细!!!超易懂!!!)
  • MATLAB代码检查工具PolySpace
  • FPGA设计之跨时钟域(CDC)设计篇(5)----同步FIFO的两种设计方法(计数器法/高位扩展法 | 手撕代码)
  • 快速掌握Vue:基础命令详解
  • MySQL——索引(二)创建索引(1)创建表的时候创建索引
  • 源代码加密怎么做?企业常用十款源代码加密软件排行榜
  • python 文件打开、读、关闭练习
  • 迈向大规模小目标检测:综述与数据集
  • 69、zabbix自动、代理、snmp监控
  • 搜索引擎设计:如何避免大海捞针般的信息搜索