堆优化版Dijkstra算法思路

Dijkstra算法和堆优化 Dijkstra介绍 迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法。这是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。迪杰斯特拉算法主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。 算法思想 dijkstra采用迭代的办法,贪心算法的原则,每一次都将改变更新源点到不同点的最小边权,遍历没有确定最优解的点。 ... 阅读详情

注意:Dijkstra算法只适用于边权为非负值的带权图

时间复杂度为O(m*log n)级别

主要思路:(采用STL中的优先队列进行优化)

准备工作:先用vector容器开适当大小的数组存放与每个点相连点的位置与边权(用pair类型成对存放),创建dis[N]来存放所有点到起始点的距离,并将所有点到起始点的距离初始化为INF(int范围内最大的数),以便后续更新最短距离。创建vis[N]来标记某个点是否被更新过。

将某点的编号和该点当前到起始点最短距离存入队列(假设点1为起始点,点1到1的最短距离为0,那么将存入(1,0)),当队列不为空时选出堆顶元素(以下操作一直循环到队列为空),用该点(假设为点u)的位置带入vector容器遍历与点u相连的点(假设为点v),如果dis[v]>dis[u]+边u-v的边权(用w表示),就将dis[v]更新为dis[u]+w;最后再把(v,dis[v])存入队列即可。

完整代码如下:

#include<bits/stdc++.h>
using namespace std;
const int N=1e5;
const int INF=1e9;
int dis[N];
bool vis[N];
vector <pair<int,int> >g[N];
struct note{
	int id;//点的位置
	int d;//该点到起始点的最短距离
};
bool operator<(note a,note b){//重载小于号运算符,让堆元素从小到大排列
	return a.d>b.d; 
}
priority_queue<note> que;
int n,m,u,v,w;

Dijkstra(int st){
	for(int i=1;i<=n;i++){
	    vis[i]=0,dis[i]=INF;//初始化
	} 
	dis[st]=0;
	que.push({st,0});
	while(!que.empty()){
		note t=que.top();que.pop();//每次取出堆顶元素后弹出该元素
		int u=t.id;
		if(vis[u]) continue;//如果已经被更新过就跳过该点
		vis[u]=1;
		for(auto eg:g[u]){//遍历与点u相邻的所有点
			int v=eg.first;
			int w=eg.second;
			if(dis[v]>dis[u]+w) dis[v]=dis[u]+w;
			que.push({v,dis[v]});
		}
	}
}

int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>u>>v>>w;
		g[u].push_back({v,w});
	}
	int st;cin>>st;
    Dijkstra(st);
    for(int i=1;i<=n;i++){
    	cout<<st<<"->"<<i<<" shortest path is"<<dis[i]<<endl;
	}
    return 0;
}

Dijkstra算法朴素版&堆优化详解(单源最短路问题) Dijkstra算法朴素版&堆优化详解(单源最短路问题) 迪杰斯特拉算法主要特点是从起始点开始,采用贪心策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。 阅读详情

相关推荐

朴素Dijkstra与堆优化Dijkstra总结

朴素Dijkstra与堆优化Dijkstra总结 1.朴素版dijkstra算法 Dijkstra 的整体思路 即进行n(n为n的个数)次迭代去确定每个点到起点的最小值 最后输出的终点的即为我们要找的最短路的距离 按照这个思路除了需要存储图外(邻接矩阵)还需要存储这两个量: dist[N] //用于存储每个点到起点的最短距离 st[N] //用于在更新最短距离时 判断当前的点的最短距离是否确定 是否需要更新 每次迭代的过程中我们都先找到当前未确定的最短距离的点中距离最短的点 int t=-1;//将t设

AEliauk的博客 6224

Dijkstra算法以及它的堆优化

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

hahahahahaha5的博客 6269

堆优化的dijkstra算法(dijkstra+邻接表+heap)

用堆优化的dijkstra,接口为邻接链表。

dijkstra算法堆优化

我们知道dijkstra算法的时间复杂度是O(N^2),外层循环松弛的次数,N个点要松弛N-1次为O(N),而内层循环是遍历dis数组每次找到距离顶点最小的点,时间复杂度也是O(N),堆优化就是优化这一过程降为O(logN),如果M(边)远小于N^2储存图用邻接表,这样优化的总时间复杂度为(N+M)logN,堆优化需要3个数组:1.dis数组记录单源顶点到其余点的距离2.h数组是一个最小堆,(注意:h数组不是按照编号大小来建立最小堆的,而是按照顶点在数组dis中对应的值来建立这个最小堆)

2301_80336512的博客 2228

景区导览系统|景区展馆智能导览|小程序导览|电子导览手绘地图制作

AI 数字导游就像一位随时陪伴在游客身边的专属导游,能够根据游客的提问,迅速、准确地提供详细的景点介绍、历史文化知识讲解,甚至能根据游客的兴趣爱好和实时位置,为其智能规划个性化的游览路线。在手绘地图中可以显示景区中的景点信息、景点和景点之间的路径,也可以显示景区的关键地点信息:景区全景、植物景观、河流、道路、地形面貌、卫生间等公共设施~无论是景区还是展馆,道可云AI智能导览系统都能通过丰富的功能、先进的技术,为游客打造便捷、智能、个性化的游览体验,成为文旅行业数字化转型的得力助手。

道可云 1148

LVDS信号调试必备:5分钟搞懂Xilinx IDELAYE3的TIME模式校准

本文深入解析了在Xilinx Ultrascale系列FPGA中调试LVDS信号时,如何正确使用IDELAYE3的TIME模式进行精密延迟校准。文章重点阐述了IDELAYCTRL、EN_VTC管脚与校准状态机的协同工作机制,揭秘了内置自校准(BISC)中Align_Delay的影响,并提供了从抽头值计算到实际眼图优化的完整实战方案,帮助工程师快速解决高速接口的时序问题。

joy55的博客 217

堆优化的Dijkstra求最短路

给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为非负值。请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 −1。

weixin_72525373的博客 362

feko金属球远场RCS双站

feko金属球远场RCS双站

a264672的博客 6914

最短路问题---朴素Dijkstra算法,堆优化版Dijkstra算法,Bellman-Ford算法,SPFA算法,Floyd算法(算法思路+例题)

处理边权全为1的图。

weixin_63001635的博客 1415

Flowable第一篇、快速上手(Flowable安装、配置、集成)

Flowable是一个轻量级、高效可扩展的工作流和业务流程管理(BPM)引擎,支持在Java应用程序中实现复杂的工作流自动化。Flowable最初是作为Activiti项目的一个分支发展而来的,但它现在已经成为一个独立的开源项目,并在企业级应用中得到了广泛使用

Du_XiaoNan的博客 1万+

IOS APP上架被拒 4.3(a) - Design - Spam,成功

成功解决IOS APP上架被拒 4.3(a) - Design - Spam,本篇博客记录了详细过程

qq_40147106的博客 6918

算法第59| dijkstra堆优化版,bellman_ford

【代码】算法第59| dijkstra堆优化版,bellman_ford。

suwnbs的博客 218

华为 MetaERP 通过元数据驱动的多组织架构 + 内部交易协同 + 自动对账引擎 + 合并规则引擎,实现多组织内部往来与合并报表的全流程自动抵消,核心是源头标准化、过程自动化、结果可追溯

摘要: 华为MetaERP通过元数据驱动的多组织架构与主数据标准化,实现内部往来与合并报表全流程自动化。其核心包括:统一组织模型与主数据(确保数据口径一致)、内部交易协同(自动生成对称凭证)、智能对账引擎(多维度自动匹配差异)、合并规则引擎(配置化抵消模板)。依托GaussDB高性能数据库与流批一体架构,华为全球88家子公司合并报表效率提升400%,关账时间缩短至2小时,支持多准则、多币种自动抵消,审计全程可追溯。相比传统ERP,MetaERP在协同性、自动化与扩展性上优势显著,为跨国集团提供高效、准确的合

金牌架构师 265

算法刷题笔记 堆优化版的Dijkstra算法求最短路(C++实现。包含详细思路分析和对C++中priority_queue的介绍)

一道较难的算法题,但是仍然属于一道模板题,给出了详细的思路分析,以及对C++中的优先队列的介绍。最后,本文给出了非常详细注释的C++代码实现。

hanmo22357的博客 1780

YOLOv12改进策略【小目标改进】| 添加专用于小目标的检测层 附YOLOv1~YOLOv12的检测头变化详解

在目标检测领域,小目标检测一直是一个具有挑战性的问题。算法以其高效快速的特点受到广泛关注,然而在面对小目标时,仍存在一些局限性。本文将介绍如何在中添加小目标检测层,以提高对小目标的检测能力。原始模型结构如下:详细内容参考:YOLOv12原始模型结构介绍 二、有效特征层对应的检测头类别 2.1 P3/8 - small检测头 原始模型中的对应的检测头主要用于检测相对较小的目标。其特征图大小相对较大,空间分辨率较高。 适合检测尺寸大概在到像素左右的目标。 2.2 P4/16 - medium检测头 这个检

Limiiiing的博客 1742

Ubuntu零基础教学-史上最详Ubuntu20.04安装教程,超级详细,强烈建议收藏!

官网地址:https://www.vmware.com/ 1、VMware Workstation Pro 15.5.1在Windows 10的安装不再介绍了,一路下一步即可。 2、下面详细介绍在VMware 虚拟机里安装Ubuntu 20.04 LTS的步骤

**My Coding Family** 2万+

Dijkstra求最短路

本题目其实是对于dijkstra的堆优化版本,因为我们在朴素的版本中比遍历了所有的边,但其实多了很多与t不相关的点,那么我们优先队列存储t,访问其有关的边即可,时间复杂度为mlogn,适用于稀疏图,稠密图还是尽量用朴素版本的。接下来 m行每行包含三个整数 x,y,z,表示存在一条从点 x到点 y的有向边,边长为 z。请你求出 1号点到 n号点的最短距离,如果无法从 1号点走到 n号点,则输出 −1。请你求出 1号点到 n号点的最短距离,如果无法从 1号点走到 n号点,则输出 −1。

weixin_46006714的博客 683

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【模板】Dijkstra算法

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

LTphy的博客 1045

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

精雕软件(JDpaint) 5.5 绿色版

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

代码随想录算法训练营第七十天 | 拓扑排序精讲,Dijkstra(朴素版)精讲,Dijkstra(堆优化版)精讲

重点:1.思路:1.

Triple_3的博客 363

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

图论篇--代码随想录算法训练营第五十八天打卡|拓扑排序,dijkstra(朴素版),dijkstra(堆优化版)精讲

拓扑排序,dijkstra(朴素版),dijkstra(堆优化版)精讲

m0_67804957的博客 852

代码随想录算法训练营第五十九天 | dijkstra(堆优化版)精讲

有了小顶堆自动对边的权值排序,那我们只需要直接从 堆里取堆顶元素(小顶堆中,最小的权值在上面),就可以取到离源点最近的节点了 (未访问过的节点,不会加到堆里进行排序)我们要选择距离源点近的节点(即:该边的权值最小),所以 我们需要一个 小顶堆 来帮我们对边的权值排序,每次从小顶堆堆顶 取边就是权值最小的边。如下图所示,起始车站为 1 号车站,终点车站为 7 号车站,绿色路线为最短的路线,路线总长度为 12,则输出 12。第三步(更新非访问节点到源点的距离),这里的思路 也是 和朴素dijkstra一样的。

懒羊羊在努力的博客 1013

第三章 搜索与图论 最短路算法之Dijkstra算法

1、算法思路 1. 解决的问题 Dijkstra算法是基于贪心的一种算法, 其目的是解决正权值图的单源最短路问题。 所谓正权值,就是指图中所有边的权值为正,所谓单源最短路就是从某一个起点出发到图中任一个位置的最短路。 2. 具体的小例子 空说其做法不太直观,不如先看个小例子。 初始状态下,除了起点之外,其他所有点到起点的最短距离均设置为正无穷。 从所有点中(包括起点)找到一个没有作为距离起点最近的点更新过其他节点的(被标记)并且距离起点最近的点,显然在当前的情况下是起点自己,本例中也就是4号点。利用选出的

刘胖仔学后端 434

Dijkstra模板

Dijkstra 算法用于求解单源最短路径问题,适用于边权非负的有向图或无向图。算法通过贪心策略逐步确定从起点到各顶点的最短路径。以 849Dijkstra 来描述朴素版的Dijkstra 算法 O(n^2)复杂度算法思路初始化:记录起点到各节点的距离,起点距离为 0,其余初始化为无穷大。贪心选择:每次从未处理的节点中选出距离起点最近的节点。松弛操作:用该节点更新其邻接节点的距离(若更短)。标记完成:已处理的节点不再参与后续计算。重复:直到所有节点均被处理。

hongjianMa的博客 881

【算法】图论——单源最短路问题

邻接矩阵存储图判断一个顶点是否已经确定最短路的数组从起点到第i个点的距离数组。距离数组中可能暂时存储的不是最短路,具体看上面的判断数组题目链接:邻接表边的权值表距离表判断表,用于判断该顶点是否遍历过堆,使用STL中的priority_queueedges[M]:用于存储所有边,M为边的数量dis[N]:用于存储经过一次松弛操作后的顶点距离backup[N]:dis的拷贝为什么要有backup?

m0_73904148的博客 1936

dijkstra算法+迷宫探索例题(牛客)

Dijkstra 算法是求一个图中一个点到其他所有点的最短路径的算法,是一个基于「贪心」、「广度优先搜索」、「动态规划」求一个图中一个点到其他所有点的最短路径的算法,时间复杂度 O(目前我了解的dijkstra算法可以解决两类问题,一种就是该题这样的,还有一种就是邻接矩阵。每次从 「未求出最短路径的点」中取出距离距离起点最小路径的点,以这个点为桥梁刷新「未求出最短路径的点」的距离模板代码:求1到n点的距离int n,m,k;int djs[N];// 存储 1到 N这两个点之间的最短距离。

iwant_的博客 615

最短路问题__dijkstra、bellman_ford、spfa、Floyd

遍历 t 所有可以到达的节点 j,如果 dist[j] 大于 dist[t] 加上 t -> j 的距离,即 dist[j] > dist[t] + w[t][j] ,则更新 dist[j] = dist[t] + w[t][j]。1.用dist数组保存从源点到其他各个点的距离,dist[i]表示从源点到节点i的距离,初始化所有距离都为正无穷,令dist[1] = 0, 因为从源点到源点的距离为0。队头不断出队,计算始点起点经过队头到其他点的距离是否变短,如果变短且被点不在队列中,则把该点加入到队尾。

Zo_ee的博客 571
下一篇: 离散数学 用c++实现离散数学逻辑推理
Initial atom
博客等级 码龄5年 11粉丝 5原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值