Dijkstra(迪杰斯特拉)算法总结

知识概览

  • Dijkstra算法适用于解决所有边权都是正数的最短路问题。
  • Dijkstra算法分为朴素的Dijkstra算法和堆优化版的Dijkstra算法。
  • 朴素的Dijkstra算法时间复杂度为O(n^2),适用于稠密图。堆优化版的Dijkstra算法时间复杂度为O(mlogn),适用于稀疏图。
  • 稠密图的边数m和n^2是一个级别的,稀疏图的边数m和点数n是一个级别的。

朴素的Dijkstra算法

例题展示

题目链接

活动 - AcWing系统讲解常用算法与数据结构,给出相应代码模板,并会布置、讲解相应的基础算法题目。icon-default.png?t=N7T8https://www.acwing.com/problem/content/description/851/

代码
#include <cstring>
#include <iostream>
#include <algorithm>using namespace std;const int N = 510;int n, m;
int g[N][N];
int dist[N];
bool st[N];int dijkstra()
{// dist[1] = 0, dist[i] = 无穷大memset(dist, 0x3f, sizeof dist);dist[1] = 0;for (int i = 0; i < n - 1; i++){int t = -1;for (int j = 1; j <= n; j++)if (!st[j] && (t == -1 || dist[t] > dist[j]))t = j;  // t为不在st为false的距离最近的点st[t] = true;// 用t更新其它点的距离for (int j = 1; j <= n; j++)dist[j] = min(dist[j], dist[t] + g[t][j]);}if (dist[n] == 0x3f3f3f3f) return -1;return dist[n];
}int main()
{scanf("%d%d", &n, &m);memset(g, 0x3f, sizeof g);while (m--){int a, b, c;scanf("%d%d%d", &a, &b, &c);g[a][b] = min(g[a][b], c);  // 重边取最小距离}int t = dijkstra();printf("%d\n", t);return 0;
}

堆优化版的Dijkstra算法

例题展示

题目链接

活动 - AcWing系统讲解常用算法与数据结构,给出相应代码模板,并会布置、讲解相应的基础算法题目。icon-default.png?t=N7T8https://www.acwing.com/problem/content/852/

代码
#include <cstring>
#include <iostream>
#include <algorithm>
#include <queue>using namespace std;typedef pair<int, int> PII;const int N = 150010;int n, m;
int h[N], w[N], e[N], ne[N], idx;
int dist[N];
bool st[N];void add(int a, int b, int c)
{e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx++;
}int dijkstra()
{memset(dist, 0x3f, sizeof dist);dist[1] = 0;priority_queue<PII, vector<PII>, greater<PII>> heap;heap.push({0, 1});while (heap.size()){auto t = heap.top();heap.pop();int ver = t.second, distance = t.first;if (st[ver]) continue;st[ver] = true;for (int i = h[ver]; i != -1; i = ne[i]){int j = e[i];if (dist[j] > distance + w[i]){dist[j] = distance + w[i];heap.push({dist[j], j});}}}if (dist[n] == 0x3f3f3f3f) return -1;return dist[n];
}int main()
{scanf("%d%d", &n, &m);memset(h, -1, sizeof h);while (m--){int a, b, c;scanf("%d%d%d", &a, &b, &c);add(a, b, c);}int t = dijkstra();printf("%d\n", t);return 0;
}

参考资料

  1. AcWing算法基础课

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528798.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二元二次方程例题_二元二次方程组-解法-例题

对“二一”型二元二次方程组中形如的方程组&#xff0c;可以根据一元二次方程根与系数的关系&#xff0c;把x、y看做一元二次方程z2-azb0的两个根&#xff0c;解这个方程&#xff0c;求得的z1和z2的值&#xff0c;就是x、y的值。当x1z1时&#xff0c;y1z2&#xff1b;当x2z2时&…

wxwidget编译安装_wxWidgets的安装编译、相关配置、问题分析处理

一、介绍部分 (win7 下的 GUI 效果图见 本篇文章的最后部分截图2张)wxWidgets是一个开源的跨平台的C构架库(framework)&#xff0c;它可以提供GUI(图形用户界面)和其它工具。目前的2.x版本支持所有版本的Windows、带GTK或Motif的Unix和MacOS。相当于大家熟悉的 VC。二、wxWidge…

馀承东发布鸿蒙,鸿蒙系统一无是处?鸿蒙有何优势?

华为方面官宣&#xff0c;将于6月2日晚8点&#xff0c;举行鸿蒙操作系统及华为全场景新品发布会&#xff0c;届时&#xff0c;大家期待已久的鸿蒙操作系统也将正式亮相。鸿蒙OS有别于传统OS&#xff0c;具有四大技术特性&#xff0c;这也是鸿蒙的四大优越之处。首先&#xff0c…

html 鼠标图标做成动画效果,怎么实现鼠标经过图标动画效果

学习前端的小伙伴们你知道鼠标经过图标动画效果如何实现吗?不知道的话跟着小编一起来学习标经过图标动画效果怎么实现把。今天就为大家分享一组时尚而简单的鼠标经过图标动画效果。构建HTML基本结构在本示例当中用到的HTML结构极其简单&#xff0c;在一个大的div容器中放了几个…

netty心跳过程中 发送消息失败_Netty 4.0 实现心跳检测和断线重连

arg0.pipeline().addLast("ping", new IdleStateHandler(25, 15, 10,TimeUnit.SECONDS));这个处理器&#xff0c;它的作用就是用来检测客户端的读取超时的&#xff0c;该类的第一个参数是指定读操作空闲秒数&#xff0c;第二个参数是指定写操作的空闲秒数&#xff0c…

校验html输入值为电话号码,js验证输入是否为手机号码或电话号码示例

代码如下:String.prototype.Trim function() {var m this.match(/^\s*(\S(\s\S)*)\s*$/);return (m null) ? "" : m[1];}String.prototype.isMobile function() {return (/^(?:13\d|15[89])-?\d{5}(\d{3}|\*{3})$/.test(this.Trim()));}String.prototype.isTe…

pcs层到mac层_mac层

ETSI TS 102 887-2-2013 电磁兼容与无线频谱事务(ERM).近程设备.智能测量无线接入协议.第2部分:数据链路层(MAC子层) 版本1.1.1ETSI TS 102 887-2-2013 电磁兼容与无线频谱事务(ERM).近程设备.智能测量无线接入协议.第2部分:数据链路层(MAC子层) 版本1.1.1ETSI TS 136 321-2013…

html表格中怎么将背景颜色虚化,如何在Photoshop中制作效果惊艳模糊背景!

把背景模糊一下&#xff0c;有时&#xff0c;效果会令人非常惊艳&#xff0c;但是&#xff0c;你知道如何在Photoshop中模糊背景吗&#xff1f; 在今天的教程中&#xff0c;我们将告诉大家&#xff0c;如何使背景模糊&#xff0c;而又不会使我们的主体周围出现光晕。在这个过程…

python 切片步长_python切片步长

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…

axure html 360安装扩展,小编搞定win7系统360浏览器添加Axure扩展的设置方案

经常使用电脑的朋友会发现win7系统360浏览器添加Axure扩展的问题比较常见&#xff0c;如今就有用户反映在使用电脑的时候遇到win7系统360浏览器添加Axure扩展的情况不知怎么解决&#xff0c;于是我就给大家整理总结了win7系统360浏览器添加Axure扩展的具体处理方案&#xff0c;…

81章 老子1章到_老子道德经第1---81章原文及译文

老子简介老子名言道德经简介道德经全文及译文道德经下载道德经全文讲解道德经朗读(道篇)|(德篇)道德经译文精简版道德经逐句翻译道德经与风水学“道”的意思人生感悟老子故里老子的思想老子的智慧老子的故事第一章[原文]道可道也①&#xff0c;非恒道也②。名可名也③&#xff…

前锋html5费用,足坛转会费最高的5位前锋,1.05亿欧元仅第5,第1比C罗还高1.22亿...

原标题&#xff1a;足坛转会费最高的5位前锋&#xff0c;1.05亿欧元仅第5&#xff0c;第1比C罗还高1.22亿大家都知道&#xff0c;前锋对于比赛的胜负非常重要&#xff0c;再加上其关注度比其他位置高&#xff0c;商业价值比较高&#xff0c;所以通常来说&#xff0c;他们的转会…

python预测新航线的票价_浙江长龙航空有限公司四条新航线(线路+票价)

新航线开通时间&#xff1a;4月5日新开通航线线路&#xff1a;杭州—郑州、杭州—洛阳—成都、杭州—赤峰—哈尔滨、深圳—临沂—哈尔滨对应航班及时刻&#xff1a;1、杭州—郑州航线去程航班号为GJ8767&#xff0c;7&#xff1a;00从杭州起飞&#xff0c;8&#xff1a;15到达郑…

h3csnmp管理命令_如何配置H3C SNMP配置实例

配置Agent# 配置Agent的IP地址为1.1.1.1/24&#xff0c;并确保Agent与NMS之间路由可达。(配置步骤略)# 设置SNMP基本信息&#xff0c;包括版本、团体名。 system-view[Sysname] snmp-agent sys-info version v1 v2c[Sysname] snmp-agent community read public[Sysname] snmp-a…

学计算机高中要买电脑,大一新生,打着学习的“口号”要求买电脑,父母到底该不该答应?...

原标题&#xff1a;大一新生&#xff0c;打着学习的“口号”要求买电脑&#xff0c;父母到底该不该答应&#xff1f;马上就进入9月份了&#xff0c;全国各大高校也都陆续开学。对于刚刚考上大学的大一新生来说&#xff0c;学校的一切都是很新鲜的&#xff0c;而且他们也不用像在…

cropper初始化_jQuery.cropper中文API详解

cropper提供了大量的参数、方法和事件供图片的剪裁操作。安装可以通过Bower或NPM来安装该插件。bower install croppernpm install cropper使用方法使用该图片剪裁插件首先要引入必要的js和css文件。HTML结构可以将图片或canvas直接包裹到一个块级元素中。调用插件可以使用$.fn…

debian查询端口进程_Linux查看端口、进程情况及kill进程

看端口&#xff1a;ps -aux | grep tomcat发现并没有8080端口的Tomcat进程。使用命令&#xff1a;netstat –apn查看所有的进程和端口使用情况。发现下面的进程列表&#xff0c;其中最后一栏是PID/Program name发现8080端口被PID为9658的Java进程占用。进一步使用命令&#xff…

网络学习云平台 计算机基础应用,计算机应用基础网络自主学习平台使用说明.doc...

《计算机应用基础》课程网络自主学习平台操作说明插件安装安装.NET&#xff0c;下载地址&#xff1a;/download/7/0/3/703455EE-A747-4CC8-BD3E-98A615C3AEDB/dotNetFx35setup.exe安装客户端&#xff0c;下载地址&#xff1a;18:2000/download/网络自主学习平台客户端.rar安装f…

计算机科学人生观和价值观,浅谈我的人生观和价值观

浅谈我的人生观和价值观2013-04-22 13:58:30 来源&#xff1a;http://www.51cok.com/ 点击:176次分享到&#xff1a;人们经常说态度决定一切&#xff0c;这就是指的人们的人生观和价值观。我们在高中学习政治哲学时开始真正地从理论上学习这一对词语&#xff0c;也是从…

adb 重命名_adb中常用的命令

进程线程有关在adb shell中adb shell pseg:capricorn:/ # psUSER PID PPID VSIZE RSS WCHAN PC NAMEroot 1 0 16468 1628 SyS_epoll_ 00004c809c S /initroot 2 0 0 0 kthreadd 0000000000 S kthreaddroot 3 2 0 0 smpboot_th 0000000000 S ksoftirqd/0root 6 2 0 0 diag_socke…