PAT//迪杰特斯拉算法
程序员文章站
2022-05-22 11:20:51
...
Dijkstra算法是典型的最短路径路由算法,用来计算一个节点到其他所有节点的最短路径。
思路如下:
1.初始化距离d[]
2.找到未访问的最近的值,记录下来temp;
3.以temp为基准更新d[]
C++实现如下
void DJ(int x){
fill(d, d + maxn, INF);
d[x] = 0;
for (int i = 0; i < n; i++){
int u = -1, min = INF;
for (int j = 0; j < n; j++){
if (inq[j]==false&&d[j] < min){
u = j;
min = d[j];
}
}//找到未访问的最近的值
if (u == -1) return;
inq[u] = true;//设为已经访问
//优化更新d[]
for (int j = 0; j < n; j++){
if (d[u] + map[u][j] < d[j]&&inq[j]==false){
d[j] = d[u] + map[u][j];
}
}
}
}
PS1:咸鱼开始跑的时候总是不对,最后发现是map[maxn][maxn]没有初始化//这里我也不太知道为什么,定义的时候int map[maxn][maxn]={INF};并没有什么用//在main()函数里面加了一句fill(map[0],map[0]+maxn*maxn,INF)解决了问题
PS2:下一篇可能会处理多个变量的情况//(当路径最短,优先选择XX最佳的方案
推荐阅读
-
Python实现迪杰斯特拉算法过程解析
-
Java 迪杰斯特拉算法实现查找最短距离的实现
-
基于Python实现迪杰斯特拉和弗洛伊德算法
-
迪杰斯特拉(Dijkstra)算法(Python)
-
js图数据结构处理 迪杰斯特拉算法代码实例
-
c/c++ 图的最短路径 Dijkstra(迪杰斯特拉)算法
-
迪杰斯特拉算法(Dijkstra)
-
Python实现迪杰斯特拉算法并生成最短路径的示例代码
-
邻接矩阵prim:php实现图的邻接矩阵及普里姆(prim算法),弗洛伊德(floyd),迪杰斯特拉(dijkstra)算法
-
13.GIS中Dijkstra(迪杰斯特拉)算法如何实现?(JavaScript版本有向图)