Floyd算法

FLOYD:

floyd算法可谓是初学者当中接触过最短路径的必学的一个算法,也是很多OIer转向学习算法的第一个算法,这个算法就是——floyd。
floyd算法的经典例子就是{usaco 2.4.4Bessie Come Home回家}这道题目。典型的floyd算法,当然也可以用spfa解决。

下面解释一下floyd算法:
floyd是求一个单源最短路径,也就是一个点到其他点的距离,所以floyd的核心思想就是:求当前第i个点到第j个点的最短路径之中是否还存在一个点k,使得点i到点k,再由点k到点j的值小于当前i到j点的最短路径呢?
所以,直接上代码:
for k:=1 to n do
                for i:=1 to n do
                        for j:=1 to n do
                                if d[i,k]+d[k,j]<d[i,j] then
                                        d[i,j]:=d[i,k]+d[k,j];<span style="white-space:pre">		</span>//核心思想
当然这个算法的前提就是两点相连的权值需要初始化的时候记录,如果不想连,则权值为无限大。
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值