最短路算法之Floyd

来源:互联网 发布:四川广电网络机顶盒 编辑:程序博客网 时间:2024/05/21 11:16

看见一篇博客,关于写这个算法的,写的也很形象易懂:

http://blog.csdn.net/hang__xiu2016acm/article/details/52252222


一,基本思路

通过一些中转点,来找任意两个点之间的最短路,但是它不能解决带有负权回路的图(如果一个图带有负权回路,则这个图没有最短路)。

二,代码的实现(主要的核心模板代码部分):

for(k=1;k<=n;k++)

    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            if(e[i][j]>e[i][k]+e[k][j])
                 e[i][j]=e[i][k]+e[k][j];

第一重循环代表可能会经过的中转站,第二,三重循环代表从i到j,如果从i到j的最短路大于经过中转站k,由i到k再加上由k到j的最短路,则把它们之间的距离更新一遍

0 0
原创粉丝点击