码迷,mamicode.com
首页 > 编程语言 > 详细

最短路径-floyd算法

时间:2018-10-03 20:28:02      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:name   turn   str   main   floyd算法   mem   define   最短路径   cst   

floyd大神发明的算法?
挺难理解的。

源代码

#include <cstdio>
#include <cstring>
using namespace std;

#define INF 0x3f3f3f3f

int dist[105][105];
int n;
void Floyd()
{
    for(int k=1; k<=n; k++)
        for(int i=1; i<=n; i++)
            for(int j=1; j<=n; j++)
                if(dist[i][k] + dist[k][j] < dist[i][j])
                    dist[i][j] = dist[i][k]+dist[k][j];
}

int main()
{
    int  m, x, y, z;
    while(~scanf("%d%d",&n, &m))
    {
        memset(dist, INF, sizeof dist);
        for(int i=0; i<=n; i++)
            dist[i][i] = 0;
        for(int i=0; i<m; i++)
        {
            scanf("%d%d%d", &x, &y, &z);
            if(z < dist[x][y])
                dist[x][y] = dist[y][x] = z;
        }
        Floyd();
        for(int i=1; i<=n; i++)
        {
            for(int j=1; j<n; j++)
                printf("%d ", dist[i][j]);
            printf("%d\n",dist[i][n]);
        }
    }
    return 0;
}

最短路径-floyd算法

标签:name   turn   str   main   floyd算法   mem   define   最短路径   cst   

原文地址:https://www.cnblogs.com/shengwang/p/9738911.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!