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

更弱智的算法学习 day60

Bellman_ford 队列优化算法

import collections def main(): n, m = map(int, input().strip().split()) edges = [[] for _ in range(n + 1)] for _ in range(m): src, dest, weight = map(int, input().strip().split()) edges[src].append([dest, weight]) minDist = [float("inf")] * (n + 1) minDist[1] = 0 que = collections.deque([1]) visited = [False] * (n + 1) visited[1] = True while que: cur = que.popleft() visited[cur] = False for dest, weight in edges[cur]: if minDist[cur] != float("inf") and minDist[cur] + weight < minDist[dest]: minDist[dest] = minDist[cur] + weight if visited[dest] == False: que.append(dest) visited[dest] = True if minDist[-1] == float("inf"): return "unconnected" return minDist[-1] if __name__ == "__main__": print(main())

bellman_ford之判断负权回路

import sys def main(): input = sys.stdin.read data = input().split() index = 0 n = int(data[index]) index += 1 m = int(data[index]) index += 1 grid = [] for i in range(m): p1 = int(data[index]) index += 1 p2 = int(data[index]) index += 1 val = int(data[index]) index += 1 # p1 指向 p2,权值为 val grid.append([p1, p2, val]) start = 1 # 起点 end = n # 终点 minDist = [float('inf')] * (n + 1) minDist[start] = 0 flag = False for i in range(1, n + 1): # 这里我们松弛n次,最后一次判断负权回路 for side in grid: from_node = side[0] to = side[1] price = side[2] if i < n: if minDist[from_node] != float('inf') and minDist[to] > minDist[from_node] + price: minDist[to] = minDist[from_node] + price else: # 多加一次松弛判断负权回路 if minDist[from_node] != float('inf') and minDist[to] > minDist[from_node] + price: flag = True if flag: print("circle") elif minDist[end] == float('inf'): print("unconnected") else: print(minDist[end]) if __name__ == "__main__": main()

bellman_ford之单源有限最短路

def main(): # 輸入 n, m = map(int, input().split()) edges = list() for _ in range(m): edges.append(list(map(int, input().split() ))) start, end, k = map(int, input().split()) min_dist = [float('inf') for _ in range(n + 1)] min_dist[start] = 0 # 只能經過k個城市,所以從起始點到中間有(k + 1)個邊連接 # 需要鬆弛(k + 1)次 for _ in range(k + 1): update = False min_dist_copy = min_dist.copy() for src, desc, w in edges: if (min_dist_copy[src] != float('inf') and min_dist_copy[src] + w < min_dist[desc]): min_dist[desc] = min_dist_copy[src] + w update = True if not update: break # 輸出 if min_dist[end] == float('inf'): print('unreachable') else: print(min_dist[end]) if __name__ == "__main__": main()
http://www.jsqmd.com/news/322767/

相关文章:

  • 领域驱动设计(DDD)在电商系统中的架构落地指南(含中英术语对照与图表)
  • Anaconda下载及安装保姆级教程(详细图文)
  • 负载均衡与反向代理实战:从Nginx配置到高可用架构设计
  • Java毕设项目:基于SpringBoot的电脑维修工单管理系统的设计与实现(源码+文档,讲解、调试运行,定制等)
  • SQL调优新维度:百万级数据下的性能跃迁实战
  • SQL调优实战密码:索引策略与Explain工具深度破局之道
  • 盘点2026年值得关注的防腐环保板材,揭晓板材品牌排名
  • 对话小水智能CEO孙雪峰:创业者如何在细分赛道逆袭大厂
  • 2026年 超声波振动棒厂家推荐榜单:超声波振动棒模具,高效精密加工源头实力品牌深度解析
  • 高考志愿选择辅助系统(11845)
  • django+Python微信小程序的手机银行储蓄业务系统的设计与实现
  • django+Python微信小程序的食堂预约点餐系统的设计与实现
  • 飞机订票系统(11843)
  • Linux docker安装达梦数据库
  • django+Python微信小程序的实验室考勤管理系统的设计与实现
  • 高考志愿辅助填报系统(11844)
  • Flutter 三端应用实战:OpenHarmony 简易“可展开任务详情卡片”交互模式深度解析
  • 亲测高中自习室:一流企业级体验复盘分享
  • 计算机毕业设计 java 羊养殖管理平台 基于 SpringBoot 的智能羊养殖管理系统 羊养殖全流程信息化管控平台
  • 房屋中介服务平台的设计与实现(11841)
  • 基于Transformer的人工智能模型搭建与fine-tuning二
  • 解读大数据领域 HDFS 的数据访问控制
  • uniapp+nodejs社区居民订购配送系统buysheji 小程序 密保
  • 房屋租赁管理系统的设计与实现(11842)
  • 大模型训练数据版权与知识产权问题的解决路径
  • 基于Transformer的人工智能模型搭建与fine-tuning
  • 热销榜单:2026年二次元测量仪品牌排行,揭晓优质厂家推荐
  • Python+django 微信小程序天气预报系统_kucjz
  • 计算机毕业设计 java 阳光二手书管理系统 基于 SpringBoot 的二手书交易管理平台 阳光二手书资源整合与交易系统
  • 【NOR Flash】关于芯片的高耐久性分区的编程/擦除周期和最小保留时间的数据