dijkstra最短路算法

简介: dijkstra最短路算法

我们先看下题目描述:(这道题可以在acwing 上搜索 Dijkstra求最短路 I 来查看额原题额,顺便也把链接放这吧,就是不知道进不进得去,进不去就自己去acwing 上搜索。Dijkstra求最短路 I)

本着下面这个原则,最终成功拿下了!

while(有bug){
  改bug
  if(accept)break;
}

贴心时刻

担心各位老板测试时不想一个一个的输入,我特地把输入输出样例写了下来,各位老板直接复制即可!

输入样例:

3 3

1 2 2

2 3 1

1 3 4

输出样例:

3

同时,也担心各位老板难以滑动代码,我还特地的准备了图片版!

然后上源代码:

#include<bits/stdc++.h>
using namespace std;
#define maxn 510
//g数组存的是邻接矩阵,d数组存的是某点到起点的最短距离,
//st数组是用来装确定了的点(确定了到起点的距离最短的点)
int g[maxn][maxn],d[maxn],st[maxn];
int n,m;
int dijkstra(){
    memset(d,0x3f,sizeof(d));//先将所有距离设为最大
    d[1]=0;//起点到起点的距离为0
    for(int i=0;i<n;i++){//找出每个点到起点的距离,每次寻找不在st中距离最近的点t
        int t=-1;//用于更新第一个点,这个比较巧妙
        for(int j=1;j<=n;j++){//寻找不在st中,距离最近的点t
            if(!st[j]&&(t==-1||d[j]<d[t])) t=j;
        }
        st[t]=true;//将t加入到st中,表示已经确定了这个点
        for(int j=1;j<=n;j++){//通过t点来更新其它点的距离
            d[j]=min(d[j],d[t]+g[t][j]);
        }
    }
    d[n]!=0x3f3f3f3f?cout<<d[n]:cout<<-1;//输出答案
    return 0;
}
int main(){
    cin>>n>>m;
    memset(g,0x3f,sizeof(g));//因为是求的最小值,所以初始化为无穷大
    while(m--){
        int a,b,c;
        cin>>a>>b>>c;
        g[a][b]=min(g[a][b],c); //在重边中去取得最小值
    }
    dijkstra();//调用
    return 0;
}


相关文章
|
6月前
|
存储 运维 监控
基于 C# 语言的 Dijkstra 算法在局域网内监控软件件中的优化与实现研究
本文针对局域网监控系统中传统Dijkstra算法的性能瓶颈,提出了一种基于优先队列和邻接表优化的改进方案。通过重构数据结构与计算流程,将时间复杂度从O(V²)降至O((V+E)logV),显著提升大规模网络环境下的计算效率与资源利用率。实验表明,优化后算法在包含1000节点、5000链路的网络中,计算时间缩短37.2%,内存占用减少21.5%。该算法适用于网络拓扑发现、异常流量检测、故障定位及负载均衡优化等场景,为智能化局域网监控提供了有效支持。
164 5
|
3月前
|
机器学习/深度学习 编解码 算法
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
363 4
|
4月前
|
算法 机器人 定位技术
基于机器视觉和Dijkstra算法的平面建筑群地图路线规划matlab仿真
本程序基于机器视觉与Dijkstra算法,实现平面建筑群地图的路径规划。通过MATLAB 2022A读取地图图像,识别障碍物并进行路径搜索,支持鼠标选择起点与终点,最终显示最优路径及长度,适用于智能导航与机器人路径规划场景。
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
854 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
10月前
|
算法 编译器 C++
【狂热算法篇】探秘图论之Dijkstra 算法:穿越图的迷宫的最短路径力量(通俗易懂版)
【狂热算法篇】探秘图论之Dijkstra 算法:穿越图的迷宫的最短路径力量(通俗易懂版)
|
存储 算法 程序员
迪杰斯特拉(Dijkstra)算法(C/C++)
迪杰斯特拉(Dijkstra)算法(C/C++)
|
机器学习/深度学习 算法 Java
算法设计(动态规划应用实验报告)实现基于贪婪技术思想的Prim算法、Dijkstra算法
这篇文章介绍了基于贪婪技术思想的Prim算法和Dijkstra算法,包括它们的伪代码描述、Java源代码实现、时间效率分析,并展示了算法的测试用例结果,使读者对贪婪技术及其应用有了更深入的理解。
算法设计(动态规划应用实验报告)实现基于贪婪技术思想的Prim算法、Dijkstra算法
基于Dijkstra算法的最优行驶路线搜索matlab仿真,以实际城市复杂路线为例进行测试
使用MATLAB2022a实现的Dijkstra算法在城市地图上搜索最优行驶路线的仿真。用户通过鼠标点击设定起点和终点,算法规划路径并显示长度。测试显示,尽管在某些复杂情况下计算路径可能与实际有偏差,但多数场景下Dijkstra算法能找到接近最短路径。核心代码包括图的显示、用户交互及Dijkstra算法实现。算法基于图论,不断更新未访问节点的最短路径。测试结果证明其在简单路线及多数复杂城市路况下表现良好,但在交通拥堵等特殊情况下需结合其他数据提升准确性。
|
资源调度 算法 定位技术
|
算法
路径规划算法 - 求解最短路径 - Dijkstra(迪杰斯特拉)算法
路径规划算法 - 求解最短路径 - Dijkstra(迪杰斯特拉)算法
831 0

热门文章

最新文章