Dijkstra

解决问题:

赋权有向图或者无向图单源最短路径&最小花费问题

算法思想:

广搜的思想

采用贪心,声明一个数组dis来保存源点到各个顶点的最短路距离、一个集合用来保存已经找到的最短路的顶点

开辟空间:

dis[i] 表示源点到某点(i)的最短距离

cos[i] 表示源点到某点 (i)的最少花费

vis[i] 表示某点是否走过

二维数组mpcost是用来存读入图的数据

可以用初始函数初始数组:

算法编写:

main函数里:

初始读入数据,一个mp用来存图,一个cost用来存每条边的权值

DIJ函数里:

dis用来保存源点到各个顶点的最短距离、c用来保存源点到各个点的花费

遍历剩余的点

 

注意for循环只用循环n-1次即可

n-2个循环里面有两个n次循环

第一次循环用来找到源点到某点距离的最小值,存下标v和dis

中间如果这个下标没有找到,那就返回呗。

第二次循环用来更新dis里的值,此时已经是那个v点往后的点了

整个dij走完一定记得return 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值