迪杰斯特拉算法(Dijkstra算法)
算法 Dijkstra
2023-09-27 14:26:25 时间
//Dijkstra算法解最短路径问题
#include<iostream>
using namespace std;
const int INF=99999;
int main()
{
int dist[105][105] ;
int book[105] ;
int i,j,n,m,a,b,c,u,v,Min;
cin>>n>>m;
//开始了!!!
for(i = 1;i <= n;i++) //每轮循环计算的是中转点为n-1时的最小点。
for(j = 1;j <= n;j++)
if(i == j) dist[i][j] = 0;
else dist[i][j] = INF;
for(i = 1;i <= m;i++)
{
cin>>a>>b>>c;
dist[a][b] = c;
dist[b][a] = c;
}
for(i = 1;i<=n;i++) //初始化标记book
book[i] = 0;
for (i = 1; i <= n; i++) {
book[i] = 1;
for(i = 1;i <= n-1;i++) //筛出当前没有访问的并且与上一点直接相连的距离最小的点。
{
Min = INF;
for(j = 1;j <= n;j++)
{
if(book[j] == 0&& dist[i][j] < Min)
{
Min = dist[i][j];
u = j;
}
}
book[u] = 1;
for(v = 1;v <= n;v++) //松弛
{
if(dist[u][v] < INF)
{
if(dist[i][v] > dist[i][u] + dist[u][v])
dist[i][v] = dist[i][u] + dist[u][v];
}
}
}
book[i] = 0;
}
for(i = 1;i <= n;i++){
for(j = 1; j <= n; j++) {
cout<<dist[i][j]<<"\t";
}
cout<<endl;
}
return 0;
}
相关文章
- 队列-我的基础算法刷题之路(六)
- 【计算机视觉】基于自组织背景减除的运动目标检测算法
- 机器学习-有监督学习-集成学习方法(四):Bootstrap->Boosting(提升)方法-->Gradient Boosting(梯度提升)算法--+决策树-->GBDT梯度提升树
- 人工智能-强化学习-算法:Critic 【用于评价一个 Actor/Policy π】--> Q-Learning【用于训练出来一个最优 Actor/Policy π,擅长处理离散型 actions】
- 图算法(一):Pagerank算法(网页排名算法)【适用场景:网页排序、社交网络重点人物发掘等】【一种由搜索引擎根据网页(节点)之间相互的超链接进行计算的技术,用来体现网页(节点)的相关性和重要性】
- 52Kruskal克鲁斯卡尔算法
- KMP算法——从入门到懵逼到了解
- 算法题: 求一个整数数组中,通过元素加减运算得到指定结果的所有运算过程. 例如【5,4,6,7,1】= 9 ?
- 《算法技术手册》一2.3.3最好情况
- 《算法技术手册》一3.5.1 算法名称和摘要
- [C++]单源最短路径:迪杰斯特拉(Dijkstra)算法(贪心算法)
- [C++]多源最短路径(带权有向图):【Floyd算法(动态规划法)】 VS n*Dijkstra算法(贪心算法)
- 基于狮群算法优化Eggholder函数,测试函数的100种求解方法之17
- 逻辑回归算法总结
- D - Silver Cow Party——POJ3268(连续用两次Dijkstra算法)
- Heavy Transportation(Dijkstra算法)
- 自然语言处理NLP星空智能对话机器人系列 第23章 MRC经典的Span Extraction模型Bi-DAF 算法
- PageRank算法
- 从历代GC算法角度刨析ZGC
- 【算法】算法的艺术(四)
- Dijkstra算法——单源最短路算法
- 最短路径问题:Dijkstra算法
- 经典算法——二分查找
- 【数据结构与算法分析】0基础带你学数据结构与算法分析09--线索二叉树 (TBT)