【算法模板】Dijkstra 队列优化版本,手敲留念~

Dijkstra算法模板及其优先队列优化~~ Dijkstra算法:用于解决 非负路权 单源 最短路问题 无优化的Dijkstra算法 int N, G[maxn][maxn] = { 0 }; //N为结点数目(编号0 ~ N-1) int d[maxn], pre[maxn]; //G为邻接矩阵,G[u][v]=0表示 u、v无通路 bool vis[maxn] = { false }; void Dijkstra(i... 阅读详情

额,大一暑假写的Dijkstra 队列优化版本,还是比较干净的,翻出来存起来以后备用。

 

#define inf 9999
#define INF 0x3f3f3f3f
#define loop(x,y,z) for(x=y;x<z;x++)
//下标自1始

int n,m,s,g;                 //s 为起点 g 为终点
int book[inf],dis[inf];      //book为标记,一个点作为中转点只能走一次
                            //dis 为起点到此点距离
int father[inf];             //记录路径:每一个点来自于上一个节点的编号
struct Node                  //存储边
{
    int to,w;
    Node(int i,int j)
    {
        to=i;w=j;
    }
    bool operator< (const Node& i)const
    {
        return w>i.w;
    }
};
vector<Node>edge[inf];       //edge 来存储每一个邻接边
priority_queue<Node>q;       //优先队列用来取元素

void init()
{
    int i;
    memset(book,0,sizeof book);
    loop(i,1,n+1)edge[i].clear();
    while(!q.empty())q.pop();
    loop(i,1,n+1)
        dis[i]=INF;
    dis[s]=0;
}
void Dijkstra()
{
    int i,j,k;
    q.push(Node(s,0));               //压入起点
    while(!q.empty())
    {
        Node t=q.top();
        q.pop();
        int u=t.to;
        if(book[u])continue;       //取出距离起点最小点(Dijkstra思想),取过就吐掉
        book[u]=1;
        int len=edge[u].size();
        loop(i,0,len)                //对中转点每一条邻接边 松弛
        {
            Node& e=edge[u][i];
            if(dis[e.to]>dis[u]+e.w)
            {
                dis[e.to]=dis[u]+e.w;
                father[e.to]=u;               //松弛成功更新路径
                q.push(Node(e.to,dis[e.to]));      //压入此点时,压入的是节点号,以及节点到起点的距离 dis
            }
        }
    }
}
int main()
{
    int i,j,k;
    scanf("%d%d",&m,&n);
    s=n;g=1;                                  //起点和终点别忘记修改
    init();
    while(m--)
    {
        scanf("%d%d%d",&i,&j,&k);
        edge[i].push_back(Node(j,k));         //这个方法即使有重边也不用修改
        edge[j].push_back(Node(i,k));
    }
    Dijkstra();
    printf("%d\n",dis[g]);
    return 0;
}

 

Dijkstra算法+堆优化(模板) /* 使用优先队列Dijkstra算法 复杂度O(ElogE) 注意对vector E[MAXN]进行初始化后加边 */ #include #include #include #include #include #include using namespace std; const int INF=0x3f3f3f3f; const int MAXN=1000010; struct qnod 阅读详情

相关推荐

【讲解 + 模板】Dijkstra迪杰斯特拉+堆优化

Dijkstra迪杰斯特拉+堆优化

Mashiro_ylb的博客 7565

第十七章 优先队列优化Dijkstra算法

通过画图和代码详解的方式帮助你掌握优先队列优化的dijkstra算法

Turing_Sheep的博客 4432

Frida实战:从adb连接到安卓设备参数加密Hook全流程解析

本文详细解析了使用Frida进行安卓应用动态分析的全流程。通过adb连接设备并部署Frida服务端,结合静态分析与动态Hook技术,精准定位并拦截关键函数,特别是针对参数加密等核心逻辑的实时监控与修改,为逆向分析与安全研究提供了高效实战方案。

weixin_29208077的博客 342

Dijkstra算法详解(二)------堆优化版

在使用Dijkstra算法时,我们每次都会对所有点遍历一遍。目的就是为了寻找距离1号点最近的点。是否有其他简单的办法去获取呢?堆优化就是解决办法。

shsbsns的博客 1772

资产监测设备中130dBm的GPS信号注入天线端口,C/N0一般是多少?

笔者的团队一直从事于资产监测设备的开发,在开发过程中,涉及到很多细节的问题,针对新入职的同事来说较为陌生。同时,在团队外,还有需要对智能硬件终端开发感兴趣的用户。基于此背景下,笔者将在下面的内容主要介绍资产监测设备以及对设备中的GPS相关的问题:130dBm的GPS信号注入天线端口,C/N0一般是多少?作出详细的解答。 资产监测设备概述: 资产监测设备是基于物联网通信技术基础上的智能硬件终端,其主要作用是帮助用户监测资产在仓库、运输途中、交付整个流通环节中,提供资产的实时位置与状态参数。用户只需要登录资产

瑞奇聊通信模组 1229

解决RK3566 USB OTG模式识别问题:从原理图分析到otg_mode文件操作全解析

本文深入解析RK3566 USB OTG模式识别问题,从硬件原理图设计到Linux内核的otg_mode文件操作,提供全面的调试方案。针对USB_OTG0_ID引脚电路设计、电源管理关联及内核驱动交互等关键点,给出实战调试技巧和常见问题解决方案,帮助开发者高效解决USB OTG模式切换难题。

eee77的博客 866

迪杰斯特拉算法(朴素and堆优化版本)笔记

迪杰斯特拉算法笔记

2303_79684072的博客 624

香橙派5B-RK3588-NPU内核升级至0.9.8:RKLLM多模态部署实战

本文详细介绍了香橙派5B-RK3588设备NPU内核升级至0.9.8版本的完整流程,重点讲解了升级的必要性、两种升级方案(预编译包安装与自行编译内核)以及RKLLM SDK的安装配置。通过实战演示多模态模型转换与推理,显著提升AI计算性能,为嵌入式AI部署提供实用指南。

salt9的博客 1025

[迪杰斯特拉模板详解]模板(紫书模板+优先队列模板) 后续会更新一些简单模板题

对于初学图论算法的ACMer,第一个接触的算法应该就是迪杰斯特拉了,所以我先简单讲讲迪杰斯特拉算法,后文简写为dij。 dij适合于边权值为正的情况,可用于计算正权图上单源最短路,即求出一个点到其它所有结点的最短路。 先举一个简单列子:如图所示,现在要求求1到5的最短路径。 先说明两个变量:w[u][v] 表示从u到v的距离, d[i] 表示从1到 i 这个点的距离。 我们先从1开...

qq_42129242的博客 750

anaconda安装-超详细版

文章目录一、anaconda安装1.1 anaconda安装地址1.2 安装详细步骤检验安装是否成功更改conda源(后续安装第三方库可以加快速度) 一、anaconda安装 Anaconda 是一个用于科学计算的 Python 发行版,支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。装anaconda,就不需要单独装python了。 anaconda优点: 1、anaconda里面集成了很多关于python科学计算的第三方库,主要是安装方便,而p

in546的博客 25万+

海思Hi3516平台集成IMX214 Sensor实战:从I2C调试到VI通路构建

本文详细记录了在海思Hi3516平台上集成索尼IMX214图像传感器的完整实战过程。从硬件I2C通讯调试、驱动层适配,到上层VI通路构建与ISP配置,提供了系统性的排查步骤与代码修改要点,旨在帮助开发者快速打通从Sensor到屏幕的完整视频采集链路,解决集成过程中的常见问题。

tcp8optimizer的博客 596

dijkstra算法-朴素法与优先队列优化法

更新方法:遍历所有的节点j,如果graph[pos][j]不等于无限大(也就是pos到j节点有边)并且它没有被访问过 isvisited[j]==0,并且minDist[j]>minDist[pos]+graph[pos][j],那么就更新这个minDist[j]为minDist[pos]+graph[pos][j],即从pos到j比从其他的点到j的路径更短。由题可知,每次循环都可以确认一个访问点,故N次一定可以让所有连通的点都被访问,故最外层由一个N大小的for循环,函数体代码如下。

2302_76871499的博客 939

92. SAP ABAP 系统里长文本 Long Text 的设计和读取函数 READ_TEXT 的详细讲解

SAP ABAP中的长文本(Long Text)是指在SAP系统中存储和管理较长文本信息的一种机制。长文本通常用于存储描述性信息、注释、说明等,这些文本信息可能超过了标准数据库表字段的长度限制。 长文本的作用主要有以下几点: 1. 更多的信息存储:长文本允许您存储和显示比标准表字段允许的更多信息。例如,产品描述、用户注释、维护计划等可能需要大量的文本来详细描述。 2. 更好的可读性:长文本提供了更好的文本格式化选项,可以改善可读性。用户可以使用段落、列表、字体样式等格式化文本,以便更容易地理解和阅读。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1996

Dijkstra算法堆/优先队列优化

Dijkstra算法堆/优先队列优化前言额外知识简介堆与优先队列STL库重载Dijkstra分析及优化分析优化代码实现存储结构边点优先队列函数初始化添加边Dijkstra主函数后记 前文:Dijkstra算法&&邻接表数组 前言 ​ 1、本文中所采用的存储结构依然是邻接表数组,只是较上一篇文章中的结构稍微发生了一些变化,但本质是一样的,若不懂可参考前文; ​ 2、本文将涉及到堆...

Mark-2000的博客 6817

RK3588 平台部署实战:OpenCV + LibTorch + FFmpeg 环境搭建与深度学习推理全流程解析

现在,你已经掌握了在RK3588上搭建OpenCV+LibTorch+FFmpeg环境的完整流程,也完成了深度学习模型的部署测试。不妨从一个具体的应用场景入手(如检测自家宠物的品种),亲手打造属于你的第一个边缘智能应用——当你看到模型在RK3588上精准输出结果时,你会发现:嵌入式深度学习的门槛,其实并没有想象中那么高。这些依赖是编译OpenCV、FFmpeg的基础,安装过程中若提示权限不足,可在命令前加。若能输出预测的类别索引,则说明环境搭建成功,模型推理流程通畅。文件,实现模型加载、图像预处理与推理。

FJN110的博客 534

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

dijkstra算法模板(优先队列优化)

dijkstra算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有 向图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。  常规的dijkstra算法复杂度较高,为O(n^2),因为要花大量时间来找当前已知的距顶点距离最小的值,所以用优先队列(值小的先出队列)来优化

路漫漫 始于足下 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Dijkstra算法及其堆优化

欢迎来到NOIP考前复习系列。。。。。。 Dijkstra算法用于解决单源最短路问题,即求取从一个给定的起点出发到其他节点的最短距离。

不写博客 2万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

dijkstra算法及模板题

Dijkstra算法( /ˈdaɪkstrəz/ DYKE-str z)是一种用于找到加权图中的节点之间的最短路径的算法,该加权图可以表示例如道路网络。它是由计算机科学家Edsger W. Dijkstra于1956年出版,三年后出版。该算法存在许多变体。Dijkstra的原始算法找到了两个给定节点之间的最短路径,但更常见的变体将单个节点固定为“源”节点,并找到从源到图中所有其他节点的最短路径,生成最短路径树。对于图中给定的源节点,该算法找到该节点与其他节点之间的最短路径。

A2105153335的博客 1735

【模板】Dijkstra算法

当 m 和 n^2 是一个级别,叫当 n 和 m 是一个级别,叫。

LTphy的博客 1045

Dijkstra算法以及它的堆优化

单源最短路径问题描述 给定一个带权有向图G=(V,E),其中每条边的权是一个实数。另外,还给定V中的一个顶点,称为源。要计算从源到其他所有各顶点的最短路径长度。这里的长度就是指路上各边权之和。这个问题通常称为单源最短路径 [1] 问题。 ...

hahahahahaha5的博客 6268

堆优化版本的dijkstra算法 邻接表

一般无负权的单源最短路使用堆优化版本的dijkstra算法 这边贴一道模板题 啰嗦一句hh: 稀疏图用邻接表 稠密图用邻接矩阵 #include<iostream> #include<queue> #include<cstring> #include<algorithm> using namespace std; typedef pair<int, int> PII; const int N = 160000; int e[N], ne[N],

梏十一郎的博客 691

洛谷P3371,Dijkstra算法模板(优先队列优化)

无优先队列优化且用邻接矩阵存储图,这题如用邻接矩阵存储图会爆内存。 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int inf = 0x3f3f3f3f; const int p = 10005...

weixin_43175029的博客 410

dijkstra算法以及堆优化后的

模板:int dijkstra(int v) { dist[v] = 0; for (int i = 1; i <= n; i++) { int t = -1; for (int j = 1; j <= n; j++) { if (!visit[j] && dist[t] < dist[j]) t = j; } for (i...

qq_61657632的博客 2432

Dijkstra 堆优化 JAVA版本

模板基于 P3371 【模板】单源最短路径 ArrayList模拟的vector第一维开足10000会T,所以只有70分 import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.PriorityQueue; import java.util.Queue; imp...

愿岁月如歌 2787

C++——spfa和dijkstra算法模板

浣花溪公园 题目背景 最短路模板题目。SPFA 或 用堆优化的迪杰斯特拉算法均可实现。 题目描述 成都浣花溪公园是一座有着诗歌文化气息的公园,它以杜甫草堂的历史文化内涵为背景,运用现代园林和建筑设计的前沿理论,以自然雅致的景观和建筑凸现川西文化醇厚的历史底蕴,是一座集将自然景观和城市景观、古典园林和现代建筑艺术有机结合的城

McDonnell_Douglas的博客 1707

Dijkstra模板

Dijkstra模板 #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;cstdlib&gt; #include&lt;cmath&gt; #include&lt;algorithm&gt; #include&lt;stack&gt; #include&lt;queue

Mr__Charles的博客 3119
上一篇: 【算法模板】Dijkstra 赤裸绿色版本,手敲留念~
下一篇: 【算法模板】快速排序,手写留念~
仰天倀笑
博客等级 码龄10年 313粉丝 124原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值