Dijkstra算法实现
#include <iostream>
using namespace std;
const int inf=1000;
int s[100],t[100];
int map[100][100];int v,n;void dijkstra()
{ s[1]=0,t[1]=0; //使用零来实现也是可以的。 for(int i=2;i<=v;i++) s[i]=map[1][i]; //不断的进行松弛。 for(int i=2;i<=v;i++) { //首先是选择距离顶点一最小的那一个顶点的。 int themin=inf; int flag; for(int j=2;j<=v;j++) //使用的是s[],只能是用一个的。 { if(t[j]!=0&&s[j]<themin) //只是用t【i】来标志是不是加上了。用来表示其中的具体含义。 { themin=s[j]; flag=j; } } t[flag]=0; //一个是标志,另一个是结果。 for(int j=1;j<=v;j++) //清楚所代表的意思就行了。 { if(t[j]!=0&&map[flag][j]+s[flag]<s[j]) //应该是已经进行了遍历。 { s[j]=s[flag]+map[flag][j]; //选择s【j】中最短的。 } } } for(int i=1;i<=v;i++) cout<<s[i]<<" "; cout<<endl;
} int main()
{ cout<<"请输入顶点数(从一开始)"<<endl; cin>>v; cout<<"请输入边数"<<endl; cin>>n; cout<<"请输入每条边的长度。(如果没有直接到达的是inf)"<<endl; for(int i=0;i<=v;i++) //初始化应该在输入之前。太早和太完都是不行的。 for(int j=0;j<=v;j++) { map[i][j]=inf; s[i]=inf; t[i]=inf; //t[i]仅仅只是一个标志罢了。 if(i==j) map[i][j]=0; } for(int i=1;i<=n;i++) { int a,b; cin>>a>>b; cin>>map[a][b]; } dijkstra(); return 0;
}
Dijkstra算法实现相关推荐
- [C] Dijkstra算法——通过边实现松弛
Dijkstra算法--通过边实现松弛 本算法学习指定一个点(源点)到其余各个顶点的最短路径,也叫做单源最短路径例如求下图1号顶点到2,3,4,5,6号顶点的最短路径 这个时候你可能就要问了,为什么不 ...
- 经典算法研究系列:二、Dijkstra 算法初探
经典算法研究系列:二.Dijkstra 算法初探 July 二零一一年一月 ====================== 本文主要参考:算法导论 第二版.维基百科. 写的不好之处,还望见谅. 本 ...
- 贪心算法单源点最短路径例题c语言源代码,Dijkstra算法是解单源最短路径问题的一个贪心算法...
问题描述 给定一个带权有向图 G=(V,E) ,其中每条边的权是一个非负实数. 另外,还给定 V 中的一个项点,称为源. 现在我们要计算从源到所有其他各项点的最短路径长度. 这里的长度是指路上各边权之 ...
- 数据结构与算法(7-4)最短路径(迪杰斯特拉(Dijkstra)算法、弗洛伊德(Floyd)算法)
目录 一.最短路径概念 二.迪杰斯特拉(Dijkstra)算法(单源最短路径) 1.原理 2.过程 3.代码 三.弗洛伊德(Floyd)算法(多源最短路径) 1.原理 2.存储 3.遍历 4.代码 参 ...
- 【算法】【ACM】深入理解Dijkstra算法(单源最短路径算法)
Dijkstra算法是用来求解从某个源点到其他各顶点的最短路径(单源最短路径). 下面的Dijkstra算法的讲解都是基于这个有向图,在遇到其他问题可以类比. 算法的基本思想: 把图中的定点分成两组, ...
- 拿来就能用!Dijkstra 算法实现快递路径优化
作者 | 李秋键 责编 | 伍杏玲 出品 | AI科技大本营(ID:rgznai100) 近几年来,快递行业发展迅猛,其中的程序设计涉及到运送路径的最优选择问题,下面我们尝试模拟实现快递路径优化问题, ...
- 基于Dijkstra算法的武汉地铁路径规划!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:牧小熊,华中农业大学,Datawhale原创作者 前言 最近爬取了 ...
- 【路径规划】Dijkstra算法——超详细原理图解
Dijkstra算法详解 1. Dijkstra算法原理 1.1. 有向图的Dijkstra算法 1.2. 无向图和栅格网络的拓展 1.2.1. 无向图 1.2.2. 栅格网络 2. Di ...
- 图论-最短路Dijkstra算法详解超详 有图解
整体来看dij就是从起点开始扩散致整个图的过程,为什么说他稳定呢,是因为他每次迭代,都能得到至少一个结点的最短路.(不像SPFA,玄学复杂度) 但是他的缺点就是不能处理带负权值的边,和代码量稍稍复杂. ...
- 【Dijkstra算法】未优化版+优先队列优化版
https://blog.csdn.net/YF_Li123/article/details/74090301 Dijkstra算法伪代码://G为图:数组d为源点到达各点的最短路径长度,s为起点 D ...
最新文章
- Mac用户SVN图形界面推荐
- linux 脚本 获取当前目录,Linux下获取脚本当前工作目录的一点感触
- Ajax Beta 2.0 中 AtlasToolKit Library 控件 Accordion 后台添加
- 分享一个基于事件时间线的Javascript类库-Chronoline
- django缓存优化(二)
- Linux c++ udp按包发送接收文件
- 旋转矩阵与欧拉角的相互转换及代码
- 时态数据库的应用介绍(1)
- 数据库之常用SQL语句整合
- Oracle P6 -SQLServer数据库乱码案例分享
- 福昕PDF编辑器中文版(FoxitPDFEditor)绿色版
- 数据库优化---空间换时间优化
- linux常用之必备基础命令一
- 知乎爬虫与数据分析(一)数据爬取篇
- 颜色匹配 opencv版
- unity换装骨骼、蒙皮、动作之美
- css分块代码,30 Seconds of CSS代码块解读(视觉篇)
- 华为手机刷微博体验更好?技术角度的分析和思考,Android基础72问
- 信奥中的数学:排列组合
- 码农翻身——Redis:MySQL算老几?