算法题 堆优化版本Dijkstra(Python)

2023-05-16

题目:

给定一个n个点m条边的有向图,图中可能存在重边和自环,所有边权均为非负值。

请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出-1。

输入格式

第一行包含整数n和m。

接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。

输出格式

输出一个整数,表示1号点到n号点的最短距离。

如果路径不存在,则输出-1。

数据范围

1≤n,m≤1.5×10^5
图中涉及边长均不小于0,且不超过10000。

输入样例:

3 3
1 2 2
2 3 1
1 3 4

输出样例:

3

代码:

from heapq import *

n, m = map(int, input().split())
idx = 0
h = [-1]*(n+1)
e, ne, w = [0]*(2*m+1), [0]*(2*m+1), [0]*(2*m+1)
st, dist = [False]*(n+1), [float('inf')]*(n+1)

def add(a, b, wei):
    global idx
    e[idx], w[idx] = b, wei
    h[a], ne[idx] = idx, h[a]
    idx += 1

def dijkstra():
    heap = []
    heappush(heap, [0, 1])
    dist[1] = 0
    while heap:
        d, cur_idx = heappop(heap)
        if st[cur_idx]: continue
        st[cur_idx] = True
        i = h[cur_idx]
        while i != -1:
            wei = w[i]
            t = e[i]
            if dist[t] > dist[cur_idx] + wei:
                dist[t] = dist[cur_idx] + wei
                heappush(heap, [dist[t], t])
            i = ne[i]
        
for _ in range(m):
    a, b, wei = map(int, input().split())
    add(a, b, wei)

dijkstra()
print(-1) if dist[n] == float('inf') else print(dist[n])
    

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

算法题 堆优化版本Dijkstra(Python) 的相关文章

  • Week11 作业 E - 选做题11-1 东东与 ATM

    一家银行计划安装一台用于提取现金的机器 机器能够按要求的现金量发送适当的账单 机器使用正好N种不同的面额钞票 xff0c 例如D k xff0c k 61 1 2 N xff0c 并且对于每种面额D k xff0c 机器都有n k张钞票 例
  • Week14 作业 D - Q老师染砖(选做)

    Description 衣食无忧的 Q老师 有一天突发奇想 xff0c 想要去感受一下劳动人民的艰苦生活 具体工作是这样的 xff0c 有 N 块砖排成一排染色 xff0c 每一块砖需要涂上红 蓝 绿 黄这 4 种颜色中的其中 1 种 且当
  • Week15 实验

    A Q 老师的记录册 Problem Statement Q 老师有 N 个学生 xff0c 每个学生都有各自独立的编号 xff0c 且编号范围在 1 N 之间 这一天 xff0c 所有学生都在不同的时间进入教室 Q 老师记录了当编号为 i
  • ffmpeg nonmatching transport in server reply

    google ONE I looked at the source for ffmpeg to see the relavent lines generating that error to try and understand what
  • 最全openstack部署教程

    简单讲讲这个鬼东西 简单点来说就是一个云 xff0c 一个属于自己的云平台 xff0c openstack的原版是亚马逊云 xff0c 可以说openstack就是Rackspace和NASA的抄袭产物 官方点说一个云平台管理的项目 xff
  • ubuntu 20.04安装cuda

    ubuntu 20 04中安装cuda 正确安装方法 xff1a 安装tensorflow后跑深度学习代码时 xff0c 发现只在cpu上运行 运行下列代码 span class token keyword import span tens
  • COCO数据集

    COCO数据集简介 全称 xff1a Common Objects in COntext xff08 上下文中的常见对象 xff09 创建者 xff1a 微软团队 xff1a 类别数 xff1a 引申 xff1a MS COCO数据集中的图
  • Manjaro软件配置与安装

    文章目录 软件安装安装NVIDIA显卡驱动常见工具软件软件安装开发类软件配置vscode 常见问题无法安装aur包参考文章 已经入manjaro的坑 xff0c 因为xfce4轻量 稳定 xff0c 于是选择的manjaro桌面环境为xfc
  • pycharm 使用

    pycharm txt文件不显示行号 xff1a View gt Active Editor gt Show Line Numbers
  • 【版本查看】

    查看相关的版本 windows 中如何查看 conda 版本 查看cuda cudnn版本 在环境中指定使用的默认的cuda版本 一 windows 中如何查看 conda 版本 开始菜单 gt Anaconda3 gt Anaconda
  • 【标注工具】旋转的 bbox 转普通 bbox

    目的 xff1a 实现以旋转目标检测的前提下 xff0c 将旋转标记框转为普通的标记框 相关连接 xff1a 实例分割 语义分割时旋转Bounding Box导致边框变宽 xff1a https www jianshu com p bb12
  • 【cv2读取并展示图片】

    cv2 读取并展示图片 span class token keyword import span cv2 img path span class token operator 61 span span class token string
  • 【mount 挂载硬盘】

    目的 xff1a 将硬盘挂载到服务器上 xff0c 进行数据拷贝 参考链接 xff1a http t zoukankan com vincent212212 p 13784584 html 具体执行过程 xff1a 在root 用户 xff
  • 【CV2 安装报错】

    在linux 服务器中安装cv2 安装命令 xff1a pip install i https pypi tuna tsinghua edu cn simple opencv python 61 61 3 4 9 31 环境 xff1a p
  • 【darknet】【yolov3】训练踩坑

    本文已解决问题概述 xff1a 测试准确率时 xff0c 没有results 文件夹的访问权限 xff1a Segmentation fault 执行darknet 相关命令是 xff0c 无法找到 libcudart so 10 0 文件
  • 【pip】pip 命令,向指定的python环境中安装包

    问题描述 服务器中因为代理的问题无法创建虚拟环境 xff0c 因此需要在base 环境中配置yolov5模型运行时需要的环境 使用 默认的pip 命令 xff0c 能够安装对应的包 xff0c 使用pip list 命令也能够查看到需要的包
  • 【基础代码】python 一些常用的基础代码

    目录 python 获取路径中最后一部分的文件名称遍历文件夹名称时 xff0c 以数字部分为关键字 xff0c 对文件名称进行排序 获取当前位置的绝对路径 具体实现 1 python 获取路径中最后一部分的文件名称 video name1
  • 【C++学习】

    背景介绍 开发环境 xff1a VS code xff08 mingw 安装与配置 c c 43 43 环境配置 VScode 汉化 xff09 目录 一 20221018 第一个C 43 43 代码 xff08 输出一句话 xff09 一
  • CSDN用户服务条款

    重要提示 xff1a CSDN特别提示您 xff0c 在注册及使用CSDN网站及相应客户端服务前 xff0c 请事先认真阅读本服务条款内容 xff0c 特别是关于用户义务 用户责任及CSDN有限保证及免责的条款 CSDN网站及相应客户端的各
  • 【虚拟环境】【conda】相关命令

    虚拟环境相关命令 1 创建指定 python 版本的虚拟环境 conda create span class token operator span n 虚拟环境的名称 python span class token operator 61

随机推荐

  • 【linux】 基础命令

    linux 一些相关命令 设置行号 一 开启 关闭 行号的显示 在命令行窗口中输入 xff1a set number 其他需要查的命令 查看内存大小查看磁盘空间大小查看端口号docker 端口映射
  • 【参数图解】

    声明 xff1a 本文为随笔性质 xff0c 无意侵犯他人权益 xff0c 如有冒犯 xff0c 请文后留言 xff0c 会尽快删除 注 忘记从哪里见到的图了 xff0c 但是感觉这张图讲的很清楚 xff0c 所以添加至自己的随笔 nvid
  • 【xml】【精灵标注助手】【标签读取与重写】

    顶部位置 具体内容 精灵标注助手的标注结果 code 将精灵标注结果改为voc格式标注结果 改写后的xml文件内容 内容4 内容5 内容6 1 精灵标注助手的标注结果 返回顶部 span class token operator lt sp
  • 【Tensorrt】【笔记】转换及笔记

    注 xff1a 要选择相应的版本 xff0c 执行对应的readme 中的内容 xff0c 否则会报错 顶部位置 具体内容 readme 翻译 git 链接 yolov5 旧代码 xff0c 成功执行记录 内容4 内容5 内容6 1 rea
  • 【os 相关函数】

    os walk xff08 xff09 span class token keyword import span os root path span class token operator 61 span span class token
  • VScode环境下使用CMake构建工程

    简介 VS code环境下使用CMake构建工程 导入VScode cmake工程C C 43 43 多文件工程构建制作静态 动态链接库文件使用外部库文件构建工程CMake常用指令填坑 本文主要介绍vscode环境下使用CMake构建工程的
  • 算法提升:并查集的十个经典题目

    目录 最长连续序列 被围绕的区域 岛屿数量 岛屿的最大面积 朋友圈问题 除法求值 xff08 hard xff09 情侣牵手 xff08 hard xff09 打砖块 xff08 hard xff09 最大人工岛 xff08 hard xf
  • 2022-08-17 私有gitlab(极狐)部署

    此处选用docker方式部署 比较简单 首先准备好了一个linux服务器 我用的是自己的虚拟机 准备开干 docker已经ok 第一步 docker镜像下载安装 96 96 96 docker pull twang2218 gitlab c
  • QT windows程序移植到Linux下一些问题以及解决方案

    1 遇到的第一个问题 cannot run compiler 39 clang 43 43 39 output 感觉主要是因为GCC下可能没有这个运行环境导致 xff0c 这个问题要三步解决 xff0c 主要是为了防止后面出现的问题 sud
  • 如何一键删除PPT的动画效果?

    其实啊 xff0c 不用这么麻烦每页的去删除全部动画 只需稍微设置一下就完美搞定 xff1a 设置幻灯片放映 辛苦制作动画效果 不仅没法展示 xff0c 如今还要再一页页删除 xff01 xff01 足足 几十页啊 xff01 xff01
  • 正版微软Office应该如何选?Office 2019与Office 365区别在哪里?

    去年9月末 xff0c 微软发布了Office 2019的正式版 xff0c 很多读者可能会有这样的疑惑 xff0c Office既有零售版本 xff0c 又有365版本 xff0c 其中 xff0c 零售版本分家庭和学生版 小型企业版和专
  • 如何让自己的网站快速被百度收录(方法一)

    首先让大家了解一下利用百度站长平台来让百度收录 需要在百度站长平台提交自己的网址 下面这个快速收录 xff0c 2020年7月份之前仅仅对部分优质站点开放 xff0c 之后基本上是不开放的 xff0c 所以我们选择普通收录 普通收录普通收录
  • CSS Backgrounds(背景)i火吧css

    CSS 背景 CSS 背景属性用于定义HTML元素的背景 CSS 属性定义背景效果 background color background image background repeat background attachment back
  • HTML 头部

    HTML 查看在线实例 定义了HTML文档的标题 使用 lt title gt 标签定义HTML文档的标题 定义了所有链接的URL 使用 定义页面中所有链接默认的链接目标地址 提供了HTML文档的meta标记 使用 元素来描述HTML文档的
  • win10自带看图工具找不到了怎么办?

    最近有很多朋友遇到win10自带看图工具找不到了 xff0c 怎么办 xff1f 有的朋友发现win10自带的看图软件没了 xff0c 有的人会去网上下载看图工具 xff0c 其实我们并不需要 xff0c 系统自带的看图工具我们是有办法调取
  • MySQL8.0设置远程访问权限,Navicat连接mysql

    今天centos7安装了mysql8 0过后远程登录数据库报错 1 首先查看防火墙状态 防火墙版本的不同命令也会有不同 0 4的命令为 systemctl status firewall service 0 5的命令为 systemctl
  • 能量景观(Energy landscape)

    文章目录 1 简介2 应用3 正式定义3 1 宏观例子 1 简介 图 世界社会经济系统的简化能量景观 xff0c 和不同细节层次的社会倾斜的动态 xff08 social tipping dynamics xff09 xff0c 突出影响转
  • 北大本科小妹妹:在北大“卷”了三年,才明白的四个道理…

    文章目录 1 比较是吃掉快乐的怪物2 什么都想要 xff0c 可能什么都得不到3 不要用精神战胜肉体4 和部分人资源共享最高效 1 比较是吃掉快乐的怪物 大一上学期的时候 xff0c 我上了一门课叫计算概论 xff0c 是教 C 语言的 x
  • 概率质量函数(Probability mass function)

    在概率和统计中 xff0c 概率质量函数 xff08 Probability mass function xff09 是给出离散随机变量恰好等于某个值的概率的函数 有时也称为离散密度函数 xff08 discrete density fun
  • 算法题 堆优化版本Dijkstra(Python)

    题目 xff1a 给定一个n个点m条边的有向图 xff0c 图中可能存在重边和自环 xff0c 所有边权均为非负值 请你求出1号点到n号点的最短距离 xff0c 如果无法从1号点走到n号点 xff0c 则输出 1 输入格式 第一行包含整数n