适用于单源最短路

边权重都是正数 稠密图(边数多)

O(N^2) //N是节点个数 M是边的数量

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
#define  INF 0x3f3f3f3f
const int N = 510;int Graph[N][N];//稠密图用邻接矩阵存储(边数多)
int Dis[N];//记录从起点到各个终点的最短距离
bool  S[N];//判断节点是否添加到集合S中
int n;//节点个数
int m;//边数 void Dijkstra()
{memset(Dis,INF,sizeof(Dis));Dis[1] = 0;//迭代n次 for(int i = 0; i < n; i++){//记录不在S中距离最近的点 int nShort = -1;for(int j = 1; j <= n; j++){//如果当前这个点不在集合S中//最近的点没有找到 或者 发现了比 nShort 更近的点 if(!S[j] && (nShort == -1 || (Dis[nShort] > Dis[j]) )){nShort = j;}}//把这个点加入到集合S中 S[nShort] = true;//更新最短路 for(int j = 1; j <= n; j++){Dis[j] = min(Dis[j],Dis[nShort]+Graph[nShort][j]);}}} int main(int argc, char** argv)
{memset(Graph,INF,sizeof(Graph));scanf("%d%d",&n,&m);while(m--){//Start End之间存在一条边 权重为Weight int nStart;int nEnd;int nWeight;scanf("%d%d%d",&nStart,&nEnd,&nWeight);//可能存在自环和重边//自环因为边的权重都为正整数 不考虑//重边只需要记录下权重最小的那个就可以 Graph[nStart][nEnd] = min(Graph[nStart][nEnd],nWeight); } Dijkstra();for(int i = 1; i <= n; i++){printf("%d ",Dis[i]); } return 0;
}

朴素版的Dijkstra算法相关推荐

  1. Dijkstra算法详解

    什么是Dijkstra算法 迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959年提出的,因此又 叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最 短 ...

  2. 【转载】最短路径之Dijkstra算法详细讲解

    1  最短路径算法 在日常生活中,我们如果需要常常往返A地区和B地区之间,我们最希望知道的可能是从A地区到B地区间的众多路径中,那一条路径的路途最短.最短路径问题是图论研究中的一个经典算法问题, 旨在 ...

  3. Dijkstra算法求最短路

    一.算法描述 Dijkstra算法的流程如下: 1.初始化dist[1] = 0,其余节点的dist值为无穷大. 2.找出一个未被标记的.dist[x]最小的节点x,然后标记节点x. 3.扫描节点x的 ...

  4. 迪杰斯特拉算法(dijkstra)_朴素版_堆优化版

    文章目录 Dijkstra算法 ①朴素版(适用于稠密图) 具体实现 ②堆优化版 具体实现 Dijkstra算法 适用于单源最短路且边权都为正数 例:输入有向图/无向图,输出n号点到1号点的最短距离 ① ...

  5. 朴素版Dijkstra算法

    文章目录 一.Dijkstra是什么? 二.使用步骤 1.Dijkstra的基本原理 2.时间复杂度 三.代码实现思路 四.代码实现 总结 一.Dijkstra是什么? Dijkstra算法是由荷兰计 ...

  6. PAT甲级1003 Emergency Dijkstra算法(堆优化版/朴素版)

    前言   最近花了很多的时间在写JAVA项目上面,疏忽了算法和数据结构的学习.最近突然醒悟基础更为重要,打算从今天开始每天抽出一些时间做下PAT甲级的题目.现有题库的前两题很简单,从第三题开始吧. 题 ...

  7. 堆优化版dijkstra算法:AcWing 850. Dijkstra求最短路 II

    堆优化版dijkstra算法分析: 朴素版dijkstra的时间复杂度为O(n^2),主要瓶颈在于第1步的寻找全局最小值的过程. 可以用小根堆(C++STL priority_queue)对dist数 ...

  8. 【Dijkstra算法】未优化版+优先队列优化版

    https://blog.csdn.net/YF_Li123/article/details/74090301 Dijkstra算法伪代码://G为图:数组d为源点到达各点的最短路径长度,s为起点 D ...

  9. Dijkstra算法(c++版)

    最短路径(DP的应用) 单源最短路径,不允许出现负环 核心思想:更新估算距离,松弛 δ(u,v)≤δ(u,x)+δ(x,v)\delta(u, v) \leq \delta(u, x) + \delt ...

  10. Dijkstra算法(堆优化版求稀疏图最短路)

    南昌理工acm集训队 迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959年提出的,是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题. 基本思想 Dijkstra算法是用来解决不 ...

最新文章

  1. 微信小程序——小程序的能力
  2. UITextFile
  3. resetroot_169route_python2(用于ubuntu12.04和14.04,centos系列)
  4. 【转】简单介绍几个CDS视图聚合函数
  5. 【架构】阿里中台内容整理(部分)
  6. 最简单的教程:在Ubuntu操作系统里安装Docker
  7. android手机电话铃声设置,安卓手机铃声怎么设置
  8. json解析和字符串解析_高效创建和解析定界字符串
  9. Android* 操作系统上的应用程序远程调试
  10. sloth(标点工具)使用说明
  11. 数据结构习题及解析三
  12. pycharm逗号后面补空格_解决在pycharm 中复制代码时出现空格的方法
  13. android 按钮果冻效果,用Tween动画简单模拟果冻按钮效果
  14. ubuntu18与win10双系统引导修复
  15. 读书笔记(二十三):代码整洁
  16. 小米4C 安装Xposed框架失败解决方案
  17. SPARK SHUFFLE中 ShuffleId BlockManagerId 以及 与ESS(External Shuffle Server)交互
  18. 如何免费将多个PDF合并成一个PDF文件?
  19. http无状态还是web应用无状态
  20. 记录一次操蛋,恶心,草率的面试经历!(面试官总是说,这个很简单啊,那个很简单啊,卧槽,企业中从来不缺乏说大话,吹牛皮的人!)

热门文章

  1. bat 输出变量 %变量名%
  2. rocketmq的有序消费模式和并发消费模式的区别
  3. CoreOS镜像更新
  4. 你说你会用Companion object?恐怕不是!
  5. 团队作业3 需求分析与系统设计
  6. 路由器OSPF配置2
  7. 事业环境因素对项目现场实施的影响
  8. 试用期要盯紧你的“四金”
  9. 揭秘ASP.NET 2.0之Page.Eval
  10. 安装mysql的zip包