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

2024.7.7刷题记录

目录

一、849. Dijkstra求最短路 I - AcWing题库

二、850. Dijkstra求最短路 II - AcWing题库


根据讲解视频写的代码

一、849. Dijkstra求最短路 I - AcWing题库

N = 600
MAXL = 10010    # 最长边长
# 稠密图邻接矩阵
g = [[MAXL] * N for _ in range(N)]
dist = [MAXL] * N   # 储存到节点1的距离
st = [False for _ in range(N)]R = lambda: map(int, input().split())
n, m = R()
for _ in range(m):x, y, z = R()g[x][y] = min(g[x][y], z)   # 重边保留最小值def dijkstra() -> int:dist[1] = 0for _ in range(n):# 寻找未知节点中的最短距离节点t = -1for i in range(1, n + 1):if not st[i] and (t == -1 or dist[t] > dist[i]):t = i# 放入sst[t] = True# 更新节点for i in range(1, n + 1):dist[i] = min(dist[i], dist[t] + g[t][i])return -1 if dist[n] > 10000 else dist[n]print(dijkstra())

二、850. Dijkstra求最短路 II - AcWing题库

# 堆优化版
import heapq
# 稀疏图用邻接表
N = int(2e5)
# 头节点初始化为-1、值为最大值
h = [-1] * N; e = [0] * N; ne = [0] * N; val = [0] * N; idx = 0
st = [False] * N
dist = [float('inf') for _ in range(N)]     # 初始化成无穷大
q = []  # 堆def add(x, y, z):global idxe[idx] = yval[idx] = zne[idx] = h[x]h[x] = idxidx += 1R = lambda: map(int, input().split())
n, m = R()
for _ in range(m):x, y, z = R()add(x, y, z)def dijkstra():dist[1] = 0heapq.heappush(q, (0, 1))while q:# 寻找distance, ver = heapq.heappop(q)if st[ver]: continue# 放入sst[ver] = True# 更新其他节点cur = h[ver]while cur != -1:j = e[cur]if dist[j] > distance + val[cur]:dist[j] = distance + val[cur]heapq.heappush(q, (dist[j], j))     # 更新时,冗余存储cur = ne[cur]return dist[n]
ans = dijkstra()
print(-1 if ans > int(1e9) else ans)

感谢你看到这里一起!加油吧!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 选择排序(C语言版)
  • 【AI应用探讨】—逻辑回归应用场景
  • Java内存区域与内存溢出异常(补充)
  • 01 企业网站架构部署与优化之Apache配置与应用
  • Apache Hadoop文件上传、下载、分布式计算案例初体验
  • 【深度学习(42)】通过vscode使用anaconda的python环境
  • MMCV教程及安装问题解决
  • 六、golang基础之面向对象特征
  • element的下拉框封装
  • Nacos服务注册总流程(源码分析)
  • Elasticsearch:结合稀疏、密集和地理字段
  • (6) 深入探索Python-Pandas库的核心数据结构:DataFrame全面解析
  • Java中的锁都有什么
  • WPF中逻辑树和视觉树
  • SQL 游标
  • Android Studio:GIT提交项目到远程仓库
  • Angularjs之国际化
  • es6(二):字符串的扩展
  • HTML5新特性总结
  • iOS编译提示和导航提示
  • JavaScript创建对象的四种方式
  • java小心机(3)| 浅析finalize()
  • SegmentFault 2015 Top Rank
  • Service Worker
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 构造函数(constructor)与原型链(prototype)关系
  • 盘点那些不知名却常用的 Git 操作
  • 前嗅ForeSpider中数据浏览界面介绍
  • 算法-插入排序
  • 交换综合实验一
  • 整理一些计算机基础知识!
  • ​TypeScript都不会用,也敢说会前端?
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • # Redis 入门到精通(九)-- 主从复制(1)
  • #Linux(make工具和makefile文件以及makefile语法)
  • (1)(1.13) SiK无线电高级配置(六)
  • (7) cmake 编译C++程序(二)
  • (pojstep1.1.2)2654(直叙式模拟)
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (利用IDEA+Maven)定制属于自己的jar包
  • (每日一问)基础知识:堆与栈的区别
  • (十二)Flink Table API
  • (原創) 物件導向與老子思想 (OO)
  • (转)ABI是什么
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • .DFS.
  • .NET Framework、.NET Core 、 .NET 5、.NET 6和.NET 7 和.NET8 简介及区别
  • .Net FrameWork总结
  • .net 程序发生了一个不可捕获的异常
  • .NET 设计一套高性能的弱事件机制
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • @RequestMapping处理请求异常
  • [2023-年度总结]凡是过往,皆为序章
  • [AI Embedchain] 开始使用 - 全栈