博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最短路径
阅读量:6948 次
发布时间:2019-06-27

本文共 959 字,大约阅读时间需要 3 分钟。

初始化 只有set[0]为1 也就是只有0并入了set中

然后从dist中找到了一条最小的4,其节点为1,将1并入set,并入1以后,更新dist

 

按这个原理循环,将所有的点都并入set中,最终得到顶点0到其它顶点的最短路径dist[ ],若要得到0到某个顶点i的最短路径,只需找path[i],例如要求0到6的最短路径,首先找到paht[6],path[6]=4,然后找path[4],path[4]=5,又找path[5],path[5]=2,又找path[2],path[2]=1,又找path[1],path[1]=0,再找paht[0],path[0]=-1,停止,寻找完毕,则从0到6的最短路径为0→1→2→5→4→6

 

void Dijkstra(int n, int **map){    //map是邻接矩阵 若两个顶点之间无路径 则为999 无穷大    int i, j;    int INF = 999;//无穷大    int *set, *dist, *path;    dist = new int[n]; //用来存每一趟边的权值,每一趟会更新    set = new int[n];  //用来存每个顶点是否已并入集合    path = new int[n]; //用来存路径    int min, v, v0 = 0;    for (i = 0; i < n; i++)    {        dist[i] = map[0][i];        set[i] = 0; //开始时每个顶点都未访问        if (map[v0][i] < INF)            path[i] = v0;        else            path[i] = -1;        }    set[v0] = 1;//v0并入集合    path[v0] = -1; //v0是起始点故它的path为-1    for (i = 0; i < n - 1; i++)    {        min = INF;        for(j=0;j

 

转载于:https://www.cnblogs.com/Liu269393/p/10225337.html

你可能感兴趣的文章
MYSQL学习笔记——数据库范式及MYSQL优化整体思路
查看>>
Linux 安装iostat命令
查看>>
python读写命名管道
查看>>
过多if-else分支的优化
查看>>
Canvas的设置
查看>>
对软件工程的期望
查看>>
[BZOJ4472] [Jsoi2015]salesman(DFS/排序)
查看>>
[BZOJ1191] [HNOI2006]超级英雄Hero(二分图)
查看>>
《Java技术》第八次作业
查看>>
Ajax
查看>>
subline Text 乱码
查看>>
管道符和作业 shell变量 环境变量
查看>>
关于canvas createRadialGradient
查看>>
在go中使用linked channels进行数据广播
查看>>
关于克隆gitlab项目的一些 问题列表
查看>>
C/C++ 平衡二叉树笔记(AVL树)
查看>>
HDU动态规划部分题目统计
查看>>
C_求质数
查看>>
Python time & random模块
查看>>
java JMF 多媒体
查看>>