图论最短路:迪杰斯特拉Dijkstra算法及堆优化

今天讲的算法出自这个人:

dijkstra大佬

好帅呀!

dijkstra算法用于单源最短路,就是在一张图中从一个点(一般是1)到所有点的最短路,n代表点数,m代表边数,朴素的dijkstra算法复杂度是 O O O(n2),堆优化后可以达到 O O O((n+m)×logn),最重要的是它不会像SPFA一样被卡掉,所以皮实好用呀!(关于SPFA,他死了)
dijkstra算法的主要思想是贪心,先把1加入点集,然后在所有与点集的连边中找到最短的,更新dis数组(表示当前最短的距离),然后把那条边连向的点加入点集,再进行过程,直到所有的点都在点集中时dis数组就是最后的答案
emmmm,之前说过了,这么算的话算法的复杂度是n方的,我们还可以堆优化,在之前的过程中,我们需要在所有连边中找到最短的,这个可以用堆优化来完成。
所以奉上代码:

#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e5+10,MAXM=2e5+10;
int n,m,s;
int x,y,c
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值