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

【算法】图论 —— Floyd算法 python



洛谷 B3647 【模板】Floyd

题目描述

给出一张由 n n n 个点 m m m 条边组成的无向图。

求出所有点对 ( i , j ) (i,j) (i,j) 之间的最短路径。

输入格式

第一行为两个整数 n , m n,m n,m,分别代表点的个数和边的条数。

接下来 m m m 行,每行三个整数 u , v , w u,v,w u,v,w,代表 u , v u,v u,v 之间存在一条边权为 w w w 的边。

输出格式

输出 n n n 行每行 n n n 个整数。

i i i 行的第 j j j 个整数代表从 i i i j j j 的最短路径。

输入输出样例 #1

输入 #1

4 4
1 2 1
2 3 1
3 4 1
4 1 1

输出 #1

0 1 2 1
1 0 1 2
2 1 0 1
1 2 1 0

说明/提示

对于 100 % 100\% 100% 的数据, n ≤ 100 n \le 100 n100 m ≤ 4500 m \le 4500 m4500,任意一条边的权值 w w w 是正整数且 1 ⩽ w ⩽ 1000 1 \leqslant w \leqslant 1000 1w1000

数据中可能存在重边。


AC_code

n, m = map(int, input().split())  
dp = [[float('inf')] * (n + 1) for _ in range(n + 1)]  
for i in range(1, n + 1):  dp[i][i] = 0  
for _ in range(m):  u, v, w = map(int, input().split())  dp[u][v] = dp[v][u] = min(dp[u][v], w)  
for k in range(1, n + 1):  for i in range(1, n + 1):  for j in range(1, n + 1):  dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j])  
for row in dp[1:]:  print(" ".join(map(str, row[1:])))


实战演练


城市间的交易

在这里插入图片描述
在这里插入图片描述

AC_code

n, m = map(int, input().split())  
dp = [[float('inf')] * (n + 1) for _ in range(n + 1)]  
res = [[0] * (n + 1) for _ in range(n + 1)]  
for i in range(1, n + 1):  dp[i][i] = 0  
a, p, s = [0] * (n + 1), [0] * (n + 1), [0] * (n + 1)  
for i in range(1, n + 1):  a[i], p[i], s[i] = map(int, input().split())  
for _ in range(m):  u, v, w = map(int, input().split())  dp[u][v] = dp[v][u] = min(dp[u][v], w)  
for k in range(1, n + 1):  for i in range(1, n + 1):  for j in range(1, n + 1):  dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j])  
# res[i][j]表示一个城市i的物品运输到城市j的最大利润  
for i in range(1, n + 1):  for j in range(1, n + 1):  res[i][j] = s[j] - dp[i][j] - p[i]  
ans = 0  
for i in range(1, n + 1):  cur = 0  for j in range(1, n + 1):  cur = max(cur, a[i] * res[i][j])  ans += cur  
print(ans)


END
如果有更多问题或需要进一步的帮助,可以在评论区留言讨论哦!
如果喜欢的话,请给博主点个关注 谢谢

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

相关文章:

  • YOLOv5 + SE注意力机制:提升目标检测性能的实践
  • 基于fast-whisper模型的语音识别工具的设计与实现
  • python中单例模式应用
  • 鸿蒙HarmonyOS 开发简介
  • 2. 在后端代码中加入日志记录模块
  • Linux软硬链接
  • Kali换源
  • Java 大视界 -- Java 大数据机器学习模型的可解释性增强技术与应用(107)
  • SYN Flood的攻击原理及防御
  • Javaweb数据库多表查询 内连接 外连接 子查询
  • 绕过 RAG 实时检索瓶颈,缓存增强生成(CAG)如何助力性能突破?
  • Nginx系列09(Nginx 与其他服务集成、实战项目)
  • nvidia驱动更新,centos下安装openwebui+ollama(非docker)
  • 手机端抓包大麦网抢票协议:实现自动抢票与支付
  • Vue3实现文件上传、下载及预览全流程详解(含完整接口调用)
  • 普通人高效使用DeepSeek指南?
  • 基于JAVA+Spring+mysql_快递管理系统源码+设计文档
  • 《从0到1:用Python在鸿蒙系统开发安防图像分类AI功能》
  • 第十四届蓝桥杯大赛软件赛国赛C/C++大学C组
  • 黑龙江省地标-DB31/T 862-2021 “一网通办”政务服务中心建设和运行规范
  • 基于SpringBoot的美妆购物网站系统设计与实现现(源码+SQL脚本+LW+部署讲解等)
  • 如何评估所选择的PHP后端框架的性能?
  • 快速搭建多语言网站的 FastAdmin 实践
  • 单片机中的flah和RAM
  • 【实战 ES】实战 Elasticsearch:快速上手与深度实践-1.1.2典型应用场景:日志分析、实时搜索、推荐系统
  • solidwork智能尺寸怎么对称尺寸
  • 直播cdn原理
  • 如何长期保存数据(不包括云存储)最安全有效?
  • 【Java】I/O 流篇 —— 打印流与压缩流
  • 更换k8s容器运行时环境为docker