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

1656打印路径-Floyd/图论-链表/数据结构

蓝桥账户中心

1.税收:

“城市的税收”:所以是中介点的税收,经过该点后加上

2.路径:

用数组存储前驱节点从而串成链表 

pre[ i ][ j ]代表的是从 i 到 j 的最短路径上 j 的前驱节点是什么

那么便可以pre[ i ][ j ]=k 把k加入path后--> pre[ i ][ k ]=k2等等如此回溯

IO技巧:

因为他输入是-1代表无法到达而不是inf

所以可以先replace('-1','inf')

然后再map(float, )

最后输出的时候记得int( )

n=int(input())INF=float('inf')
ma=[]for i in range(n):temp=input()temp=temp.replace('-1','inf')#print(temp)ma.append(list(map(float,temp.split()))) ##float#print(ma)shui=list(map(int,input().split()))s=[]
while 1:temp=list(map(int,input().split()))if temp[0]==temp[1]==-1:breaks.append(temp)#用链表存储前驱-->路径pre = [[i for j in range(n)] for i in range(n)]
print(pre)def floyd(ma):#直接获得任意两点之间的最小costd=[[ma[i][j] for j in range(n)]for i  in range(n)]for k in range(n):#中间节点:shui[k]for i in range(n):for j in range(n):#if d[i][k]!=-1 and d[k][j]!=-1:if d[i][j] > d[i][k] + d[k][j] + shui[k]:#更新判断d[i][j] = d[i][k] + d[k][j] + shui[k]#shui:直接加在点上pre[i][j] = pre[k][j]return ddef buildpath(i, j):path = [j]while i != j:j = pre[i][j]path.append(j)path.reverse()#因为是从终点往前:得掉个头return pathd=floyd(ma)for i,j in s:print(f'From {i} to {j} :')i-=1j-=1path=buildpath(i,j)print('Path:','-->'.join(str(x+1) for x in path))print('Total cost :',int(d[i][j]))print()

相关文章:

  • 如何使用 uv 构建 Python 包并本地安装
  • 【算法笔记】动态规划基础(一):dp思想、基础线性dp
  • 数据结构与算法学习笔记(Acwing提高课)----动态规划·数字三角形
  • Kubernetes (k8s) 日常运维命令总结
  • 12-DevOps-Gitlab托管Jenkinsfile
  • TDengine 数据订阅设计
  • Linux驱动开发2 - 内核定时器驱动
  • 时序数据库 TDengine 助力石油石化业务, 平滑接替 Oracle 数据库
  • 【GESP】C++二级真题 luogu-B4259 [GESP202503 二级] 等差矩阵
  • Spark集群搭建之Yarn模式
  • PyCharm 链接 Podman Desktop 的 podman-machine-default Linux 虚拟环境
  • LeetCode-46. 全排列
  • 1、AI及LLM基础:OpenAI 开发
  • NoSql文档型数据库——Mongodb
  • Apache中间件解析漏洞与安全加固
  • Python流程控制
  • FANUC机器人GI与GO位置数据传输设置
  • 初识Redis · 事务
  • 项目组合管理PPM
  • 5.4.云原生与服务网格
  • “家门口的图书馆”有多好?上海静安区居民给出答案
  • 乌代表团与美特使在伦敦举行会谈,双方同意继续对话
  • 重庆一幼儿园回应招聘硕士幼教:统一标准,江北区学前教育岗的硬性要求
  • 世界最大全电驱可拆装环保绞吸船投入官厅水库清淤试点工程
  • 大连万达商业管理集团提前兑付“22大连万达MTN001” ,本息2.64亿元
  • 一季度全国纪检监察机关共处分18.5万人,其中省部级干部14人