【模板】最短路径之Dijkstra算法

Dijkstra(迪杰斯特拉)算法模板 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。Dijkstra一般的表述通常有两种方式,一种用永久和临时标号方式,一种是用OPEN, CLOSE表的方式,这里均采用永久和临时标号的方式。注意该算法要求图中不存在负权边。 立即下载

是一种贪心的单源最短路径算法(可证明)。

注意点:

1. 图的链式存储(vector数组方式)。

2. 循环n次。可分为两大步骤:加入新的节点后更新最短距离、寻找下一个节点(要有最短距离)并加入集合。

时间复杂度:

 o(n^2)

//Dijstra算法
#include<cstdio>
#include<vector>
using namespace std;
struct E{
	int next;	//代表直接相邻的顶点
	int c;		//代表该边的权值 
}; 
vector<E> edge[2001];	//邻接链表
bool mark[2001];		//标注为True时表示该结点最短路径长度得到,已加入集合K
int Dis[2001];	//当标注为True时是已得的最短路径长度,
				//否则是从1出发,经过已知的最短路径达到K中的某节点,再经过一条边到达i结点的路径中的最短距离
int main(void)
{
	int n,m;
	while(scanf("%d%d",&n,&m)!=EOF)		//路口数、道路数 
	{
		//if(n==0&&m==0) break;
		for(int i=1;i<=n;i++) edge[i].clear();	//初始化邻接链表
		while(m--)
		{
			int a,b,c;
			scanf("%d%d%d",&a,&b,&c);
			E tmp;
			tmp.c = c;
			tmp.next = a;
			edge[b].push_back(tmp);		//将邻接信息加入邻接链表 
			tmp.next = b;
			edge[a].push_back(tmp);		//再次加入,因为是无向图 
		 } 
		for(int i=1;i<=n;i++)//因为结点从1开始 
		{
			Dis[i]=-1;		//所有结点不可达 
			mark[i]=false; 		//所以结点不属于K 
		}
		Dis[1]=0;	//得到最近的结点为1,长度是0 
		mark[1]=true; 	//将结点1加入K
		int newP = 1;	//集合K新加入的结点是1
		for(int k=1;k<n;k++)	//循环n-1次,按照最短路径递增确定其它n-1个结点的最短路径长度
		{
			for(int j=0;j<edge[newP].size();j++)	//遍历新加入结点的直接相邻的边
			{
				int t = edge[newP][j].next;		//直接相邻的边的另一端 
				int c = edge[newP][j].c;		//直接相邻的边的权重 
				if(mark[t]==true) continue;	//另一端结点如果已经在集合K了,跳过
				if(Dis[t]==-1||Dis[t]>Dis[newP]+c)	//如果该结点尚不可达,或者该结点t从新加入的结点NewP经过该边到达的路径更短
				{
					Dis[t] = Dis[newP]+c;	//更新最短距离信息 
				 } 
			} 
			int min =123123123;//初始化大整数
			for(int j=1;j<=n;j++)	//遍历所有的结点 
			{
				if(mark[j]==true) continue; 	//结点属于K则跳过
				if(Dis[j]==-1)	continue;		//若该结点仍然不可达,也跳过
				if(Dis[j]<min)	//若该结点经由结点至集合K中的某点在经过一条边到达的距离小于当前最小值 
				{
					min = Dis[j];		//更新其为最小值 
					newP = j;		//新加入的结点暂定为这个点 
				 } 
			 } 
			 mark[newP] = true;		//确定为新加入结点 
		 }  
		 printf("%d\n",Dis[n]);
	}
	return 0;
 } 

 2019/04/14 第一次错误更正:程序错误(更新的是新加入结点邻接边的另一端结点)。

 

【飞控】UAV Toolbox Support Package for PX4 Autopilots安装与配置 安装配置UAV Toolbox Support Package for PX4 Autopilots硬件安装包 阅读详情

相关推荐

python特征选择pso_【来点干货】机器学习中常用的特征选择方法及非常详细的Python实例...

花费了很长时间整理编辑,转载请联系作者授权,违者必究。特征选择(Feature selection)是在构建预测模型的过程中减少输入变量的一个过程。它是机器学习中非常重要的一步并在很大程度上可以提高模型预测精度。这里我总结了一些机器学习中常见的比较有用的特征选择方法并附上相关python实现code。希望可以给大家一些启发。首先,我们为什么要进行特征选择呢?它有以下几个优点:减少过拟合:冗余数据常...

weixin_39927158的博客 1161

【C++】Dijkstra算法模板(迪杰斯特拉)

算法前提 n,图的顶点数 k,图的边数 begin,起点下标 end,终点下标 map[ i ][ j ],图的存储数组 low[ i ],图的最短路径状态数组 visit[ i ],顶点访问标记数组 INF,不可访问标记 算法描述 初始化最短距离为直接距离,low[ i ] = map[ begin ][ i ] 初始化访问标记,visit数组为false 查找未访问的lo...

cout0 4349

谷歌(Google) Pixel 8/9 Pro(xl)如何获取 root 权限

谷歌(Google)Pixel8/9Pro(xl)等系列手机破解后,会在你的init_boot.img同路径生成一个magisk_patched.img,把这个文件拷贝到adb目录下,稍后还得把它刷回手机,这样手机才能获得Root权限,因为安卓14、15以后的内核结构调整,和Pixel7及以下的6、5、4、3、2等系列手机破解稍微不一致。因为ROOT权限的获取,需要使用ROM中的内核文件,个人强烈建议在官网下载ROM,直接刷最新版,其他地方的ROM如果没有校验码,请自行斟酌是否使用。

bugsycrack的博客 3486

Dijkstra模板详解(适合完全不懂的小白)

这里用t来作为后面for循环的一个判断条件,因为后面for循环中当第一个进入判断时,t作为当前的在所有最短路径中最短的,然后不断更新,找到最后,就找到了,从起点到任一点的最短距离中最短的,然后st[t]=true,表示已经拿出来用过了,后面一个for循环应该很好理解,就是更新所有从起点到任一点的最短距离,因为,你找到了起点到t距离最短,那其他点经由t作为中转点,就能算出从起点到任一点的最短距离的另一结果,再跟原本的比较,取消的,循环n次,最后就是所要求的。重复2、3步骤,直到所有节点的最短路径长度被确定。

chen1254646的博客 460

最强解析!CWRU轴承数据集Python实战:从数据加载到模型部署全流程

本文提供了一份完整的CWRU轴承数据集Python实战指南,涵盖从数据加载、预处理、特征工程到模型构建与训练的全流程。详细解析了如何利用1D-CNN、Transformer等深度学习模型进行轴承故障诊断,并介绍了模型评估、可解释性分析以及通过FastAPI部署模型的实用方法,为工业设备智能运维提供了一套可复用的解决方案。

time3的博客 365

如何实现MCGS与S7-200SMART PLC以太网多台通信控制?

第九步:(设备工具箱—设备管理—鼠标依次点击通用TCP/IP父设备—西门子_ Smart200到设备窗口里面去)数据类型:第0位(指PLC地址变量小数点后面的位数,例如我地址是M0.0,那么在数据类型应填写通道的第00位)第十步:(鼠标双击打开通用TCPIP父设备0--[通用TCP/IP父设备]进入通信配置)通道地址:0(指小数点前面起始字节的地址,例如我地址是M0.0,那么应在通道地填写0)。第七步:(选择通用TCP/IP父设备,点击新增,右侧选定设备就会自动添加进去。

u010670857的博客 6715

Dijkstra算法模板及应用

到了「加权图」的场景,事情就没有这么简单了,因为你不能默认每条边的「权重」都是 1 了,这个权重可以是任意正数(Dijkstra 算法要求不能存在负权重边)。刚才说普通 BFS 算法中,根据 BFS 的逻辑和无权图的特点,第一次遇到某个节点所走的步数就是最短距离,所以用一个。因为两个节点之间的最短距离(路径权重)肯定是一个确定的值,不可能无限减小下去,所以队列一定会空,队列空了之后,你第一次经过某个节点时的路径权重,不见得就是最小的,所以对于同一个节点,我们可能会经过多次,而且每次的。

weixin_43398741的博客 926

栅格数据空间叠置分析题目步骤讲解

题目: 准备工作: ①新建数据库,将实验数据导入(利于后期矢量转栅格操作,未建数据库此步骤会一直出错); ②在工具条自定义窗口勾选spacial analyst模块,在菜单栏→扩展模块,勾选spacial analyst;确保实验后面的操作可以成功。 详细操作步骤: 1.对三个方案的规划路线(line.shp)建立50m缓冲区;打开ArcMap,在ArcToolBox→分析工具→邻域分析→缓冲区,打开缓冲区工具窗口,界面设置如图:线性单位填写50米,其余默认,单击“确定”。 ...

m0_57139844的博客 8893

dijkstra算法入门及常用模板

Dijkstra Dijkstra 算法用于寻找图上两点的最短路径。根据最短路径经过的点也是最短路径的原理(由矛盾律得出:如果经过点的路径不是最短路径,则整条路径也不是最短),从起点开始,通过一步步寻找到下一个点的最短路径,最终得到到达其他所有点的最短路径。 算法的思路 Dijkstra算法采用的是一种贪心的策略,声明一个数组dis来保存源点到各个顶点的最短距离和一个保存已经找到了最短路径的顶点的集合:T,初始时,原点 s 的路径权重被赋为 0 (dist[s] = 0)。若对于顶点 s 存在能直接到达的边

典典想睡觉 1655

大模型实战—通义千问大模型微调

这个参数仅针对 llama 类型的模型结构,默认勾选的是 q_proj 和 v_proj,具体的名词不容易理解,我就不多说了,可以简单的认为是对模型的理解能力进行优化,一般这两个就够了。当这个值较高时,适应新任务的能力会增强,但是对基础模型的影响会比较大,有过拟合的风险,尤其是在数据量有限的情况下。为了方便测试,我在云环境也创建了一个镜像,相关的环境都配置好了,可以直接使用几个国内开源的大语言模型,比如清华智谱的ChatGLM3-6B、零一万物的Yi-34B,还有最近阿里云开源的Qwen1.5-32B。

7万+

Unreal使用nDisplay制作裸眼3D(9宫格)

摘要: nDisplay是虚幻引擎的分布式实时渲染技术,可将内容同步输出到多个显示设备(如LED墙、投影仪等),构建沉浸式可视化系统。其核心功能包括:分布式渲染(支持多台设备协同处理高分辨率内容)、空间透视校正(通过追踪观众动态调整画面几何关系)以及虚拟拍摄应用。配置时需设置集群组件(Cluster、Host、Node、Viewport)定义渲染逻辑,空间组件(nDisplayScreen、ViewPoint)确定投影关系。文中以9宫格配置为例,详细演示了从工程创建到影片渲染合成的全流程,最终通过多视口合成

TxNet 608

【模板】Dijkstra算法

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

LTphy的博客 1045

PyTorch实战(19)——变分自编码器(Variational Autoencoder,VAE)

变分自编码器 (Variational Autoencoder, VAE) 是一种结合了自编码器和概率建模的生成模型,通过编码器将输入数据映射到潜在空间中的概率分布,并通过解码器将从潜在空间采样得到的潜在变量映射回原始数据空间,实现了数据的生成和特征学习。本节中,将介绍变分自编码器的基本概念,并使用 PyTorch 实现变分自编码器生成新图像。

盼小辉丶的博客 2870

【PAT】最短路径算法Dijkstra模板总结

【代码】最短路径算法Dijkstra模板总结。

weixin_50952205的博客 681

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

最短路径算法之 Dijkstra && BellmanFord(模板)

目录1 Dijkstra算法1.1 算法模板1.2 例题Problem DescriptionInput SpecificationOutput SpecificationSample InputSample Output题解2 BellmanFord2.1 讲解2.2 例题问题描述输入格式输出格式样例输入样例输出数据规模与约定题解 1 Dijkstra算法 适用范围:不能解决带有负边的图 1.1 算法模板 #include <iosream> #include <cstdio>

Lili Liang的博客 657

深度学习工具包 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")

最短路径---dijkstra算法模板

dijkstra算法模板 http://acm.hdu.edu.cn/showproblem.php?pid=1874 1 #include<stdio.h> 2 #include<string.h> 3 #include<math.h> 4 #include<iostream> 5 #include<stdlib...

weixin_30867015的博客 137

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

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

最短路径:Dijkstra和Floyd算法模板

Dijkstra模板 void Dijkstra(int u) { int i; for(i=0;i<n;i++) { dis[i]=map[u][i]; //dis记录u到i的距离 vis[i]=0; } dis[u]=0; vis[u]=1; //vis标志是否被遍历过 int j,k,temp; for(i=0;i<n;...

G191018的博客 367

最短路径问题(Dijkstra 算法java模板)

实际应用中需根据题目数据范围调整。

2301_76231651的博客 490

【数据结构】单源最短路径dijkstra算法描述及模板

【数据结构】单源最短路径dijkstra算法模板

un_fired的博客 521

图最短路径Dijkstra算法的注意点、模板、适用问题

一、注意点 无权图可以适用广度优先搜索算法进行解决,广度优先搜索的总结如下: https://blog.youkuaiyun.com/I_canjnu/article/details/121147016?spm=1001.2014.3001.5501 但是对于带权图,就不能再用广度优先搜索算法了,因为最短路径取决于权值之和而不再是跨越的层数,所以要使用Dijkstra算法,其本质为建立一张起点到各个其他顶点的距离表,并且不断刷新,直到找到结果。 需要注意的是,Dijkstra算法只适用于边权为正数的情况,如果边权是负数

出门左拐是海的博客 2092

图的最短路径算法Dijkstra算法模板

Dijkstra算法:伪代码 1 //G为图,一般设为全局变量,数组d[u]为原点到达个点的额最短路径, s为起点 2 Dijkstra(G, d[u], s){ 3 初始化; 4 for (循环n次){ 5 u = 是d[u]最小的且还未访问的顶点的标号; 6 记u已经被访问; 7 for (从u出发能到达...

Lucky小黄人的博客 267

【模板】单源最短路径(Dijkstra算法)

题目 洛谷P4779【模板】单源最短路径(标准版) 题解 链式前向星(存边结构):与链表的结构和查找遍历方式相同,唯一的不同点就是插入的位置。链式前向星每次将新的元素插入链表头。为每一个节点建立一个链表,存入此节点的所有出边。 Dijkstra算法:这个算法要求所有边的权重都为非负值。定义d[i]为从起点到第i个节点的最短路径长度。 算法流程:假设起点为s。1.令d[s]=0 ,其它d[i]为无穷大 2.从没有被标记的节点中找出d[x]最小的节点x,然后标记x 3.枚举x

zjgmartin的博客 334

最短路径模板——dijkstra算法

稠密图 稠密图采用邻接矩阵存储: g[i][j]=x,表示i->j的距离为x 题目描述 给定一个n个点m条边的有向图,图中可能存在重边和自环,所有边权均为正值。 请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出-1。 输入格式 第一行包含整数n和m。 接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。 输出格式 输出一个整数,表示1号点到n号点的最短距离。 如果路径不存在,则输出-1。 数据范围 1≤n≤500, 1≤m≤105, 图中涉及边长均不超

HangHug_L的博客 2380

图论最短路径 Dijkstra算法和模板

图论最短路径 Dijkstra算法和模板     Dijkstra算法是用来求单源最短路径的算法。时间复杂度O(N^2); 注意:1,不能求含有负权的图,含有负权可以采用Bellman-ford和SPFA算法     2.不能直接求单源最长路径 算法思想:把所有的边分成两个集合A,B。集合A表示已经求出最短路径的点,不断扩展集合A,减少集合B。每一扩展就从结合B中找出到

u014035838的专栏 592

dijkstra 最短路径算法模板

单源最短路径dijkstra算法,使用优先队列优化

@fei 1332

最短路径算法模板:Dijkstra/Floyd/Bellman-Ford模板

此处不解释算法,只写代码模板。 Dijkstra 邻接矩阵实现 #include&amp;lt;iostream&amp;gt; #include&amp;lt;cstdio&amp;gt; #include&amp;lt;cstring&amp;gt; using namespace std; const int MAX=0x3f3f3f3f; int map[110][110]; int dis[110]; int

Akatsuki 1223
上一篇: 如何用uDig美化地图并发布到GeoServer
下一篇: 【模板】最短路径之Floyd算法 (最短路径问题题解)
coderwait
博客等级 码龄9年 20粉丝 210原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值