输出最短的路径,这里以源点0=>6进行说明,dist[6]=16,即该路最短路径长度为16。path[6]=4,path[4]=5,path[5]=2,path[2]=1,path[1]=0,反推出最短路径为0 -> 1-> 2 -> 5 - > 4 -> 6

从顶点0到顶点1的路径长度为:4 路径为:0,1
从顶点0到顶点2的路径长度为:5 路径为:0,1,2
从顶点0到顶点3的路径长度为:6 路径为:0,3
从顶点0到顶点4的路径长度为:10 路径为:0,1,2,5,4
从顶点0到顶点5的路径长度为:9 路径为:0,1,2,5
从顶点0到顶点6的路径长度为:16 路径为:0,1,2,5,4,6

dijskra算法代码实现

#ifndef UNTITLE_MATGRAPH_H
#define UNTITLE_MATGRAPH_H#endif //UNTITLE_MATGRAPH_H
#define MAXV 10
#define INF 32767
typedef struct {int no;                 //顶点的编号char info;              //顶点的其他信息
}VertexType;                //顶点的类型
typedef struct {int edges[MAXV][MAXV];  //邻接矩阵数组int n, e;               //定点数,边数VertexType vexs[MAXV];  //存放顶点信息
}MatGraph;                  //完整的邻接矩阵类型
#include "../MatGraph.h"
#include "bits/stdc++.h"using namespace std;void DisPath(MatGraph g, int dist[], int path[], int S[], int v);/**** @param g     邻接矩阵* @param v     起始顶点编号*/
void Dijkstra(MatGraph g, int v) {int dist[MAXV], path[MAXV];int S[MAXV];int mindis, i, j, u;for (i = 0; i < g.n; i++) {dist[i] = g.edges[v][i];S[i] = 0;if (g.edges[v][i] < INF) {path[i] = v;} else {path[i] = -1;}}S[v] = 1;path[v] = -1;for (i = 0; i < g.n - 1; i++) {mindis = INF;/// 选取不在{S}中,即在{U}中具有最小路径的顶点ufor (j = 0; j < g.n; i++)if (S[j] == 0 && dist[j] < mindis) {u = j;mindis = dist[j];}/// 将最小的顶点u加入{S}集合中S[u] = 1;for (j = 0; j < g.n; j++) {/// 修改不在{S}中即{U}中的最短路径if (S[j] == 0) {/// 这里参考图的 0~1行假设当前的 u = 1, j = 2if (g.edges[u][j] < INF && dist[u] + g.edges[u][j] < dist[j]) {dist[j] = dist[u] + g.edges[u][j];path[j] = u;}}}}DisPath(g, dist, path, S, v);
}void DisPath(MatGraph g, int dist[], int path[], int S[], int v) {int i, j, k;int apath[MAXV], d;for (i = 0; i < g.n; i++)if (S[i] == 1 && i != v) {printf("从顶点%d到顶点%d的路径长度为: %d\t路径为: ", v, i, dist[i]);d = 0;apath[d] = i;k = path[i];if (k == -1) {printf("没有路径");} else {while (k != v) {d++;apath[d] = k;k = path[k];}d++;apath[d] = v;printf("%d", apath[d]);for (j = d - 1; j >= 0; j--)printf(", %d", apath[j]);printf("\n");}}
}

ppt下载
链接:https://pan.baidu.com/s/1sgOfG4Cdu53OBguJovPGaQ
提取码:6666
复制这段内容后打开百度网盘手机App,操作更方便哦

Dijskra迪杰斯特拉算法相关推荐

  1. 题目 1708: 数据结构-Dijskra(迪杰斯特拉)最短路径算法

    参考<大话数据结构> 题目描述 在带权有向图G中,给定一个源点v,求从v到G中的其余各顶点的最短路径问题,叫做单源点的最短路径问题. 在常用的单源点最短路径算法中,迪杰斯特拉算法是最为常用 ...

  2. 迪杰斯特拉算法(C语言实现)

    迪杰斯特拉算法(C语言实现) 如上图,求以a为源点到个顶点的最短路劲. #include "stdio.h" #include "stdlib.h" //用一个 ...

  3. C++迪杰斯特拉算法求最短路径

    一:算法历史 迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题.迪杰斯特拉算法主要特点是以 ...

  4. 迪杰斯特拉算法——PAT 1003

    本文主要是将我对于我对于迪杰斯特拉算法的理解写出来,同时通过例题来希望能够加深对于算法的理解,其中有错误的地方希望大家指正. 迪杰斯特拉算法 我将这个算法理解成一个局部到整体的算法,这个方法确实越研究 ...

  5. 单源最短路径-Dijkstra(迪杰斯特拉算法)

    迪杰斯特拉算法时间复杂度为O(n^2),其中n为顶点个数. 该算法用于求单源最短路径.并且图中的边不允许带负权值. #include <iostream> using namespace ...

  6. JavaScript实现dijkstra迪杰斯特拉算法(附完整源码)

    JavaScript实现dijkstra迪杰斯特拉算法 PriorityQueue完整源代码 MinHeap.js完整源代码 Heap.js完整源代码 Comparator.js完整源代码 dijks ...

  7. C++实现Dijkstra(迪杰斯特拉)算法(附完整源码)

    C++Dijkstra迪杰斯特拉算法的实现 C++Dijkstra(迪杰斯特拉)算法的完整源码(定义,实现,main函数测试) C++Dijkstra(迪杰斯特拉)算法的完整源码(定义,实现,main ...

  8. C语言实现Dijkstra(迪杰斯特拉)算法(附完整源码)

    Dijkstra迪杰斯特拉 Graph结构体定义 迪杰斯特拉算法完整源码(定义,实现,main函数测试) Graph结构体定义 struct Graph {int vertexNum;int **ed ...

  9. 狄斯奎诺算法 c语言,图的邻接表实现迪杰斯特拉算法(C语言).doc

    图的邻接表实现迪杰斯特拉算法(C语言) /*迪杰斯特拉算法(狄斯奎诺算法)解决的是从源点到其它所有顶点的最短路径问题*/ //算法实现: #include #include #define MAX 2 ...

最新文章

  1. Linux下find命令详情
  2. Shiro SpringMVC 非maven HelloWorld
  3. 什么是连续潮流cpf_2019童装秋冬潮流趋势报告:一文读懂童装潮流四大消费趋势...
  4. PHP-代码审计-文件读取(下载)
  5. 提高页面显示速度的秘技
  6. php7 imagick扩展,php7安装imagick扩展
  7. PHP计算字符串的个数
  8. 在VS 2010中查询和导航代码
  9. 将数据集转换为Excel格式的一个实现
  10. spring + mybatis + 多数据源整合事务
  11. java俄罗斯方块代码_[转载]java编写的一个俄罗斯方块(源代码)
  12. linux的pcan驱动安装
  13. PS 将图片渐变透明
  14. iWebShop核心团队启动shukai新域名,进入全案SEO网络营销领域发力SEO众包外包服务
  15. js实现外链访问劫持代码 可劫持百度快照
  16. 本周周报-20220109
  17. mac调整启动台图标
  18. 【知识科普】解读闪电/雷电网络,零基础秒懂!
  19. 我终于有了GMAIL帐号了
  20. 编程漫谈(十一): 编程概要

热门文章

  1. jquery append添加的元素用jquery无法获取到
  2. 国耀明医互联网医院: 白露吃什么好 白露食疗方
  3. 阿里巴巴稀疏模型训练引擎-DeepRec
  4. 字体使用的侵权是如何判定的?
  5. 在QTCreator中保存某个文件出现:保存文件时发生错误:无法写入文件D:\test\test.h.磁盘已满?
  6. Android黄油刀插件使用记录
  7. miner配置文件详解
  8. 运兴ETF期权投教之50ETF期权新手雷区
  9. 试验数据管理系统TDM6.0产品功能介绍之——签到管理
  10. 计算机笔记--【并发编程①】