【博客】最短路径算法

Floyd

时间复杂度O(n3) 空间复杂度O(n2)
可求出每对节点间的最短路
事实上,floyd是基于动态规划实现的
f[k][i][j]表示经过前k个节点,从ij的最短路径
可得f[k][x][y]=min(f[k1][x][y],f[k1][x][k]+f[k1][k][y])
其中f[k1][x][y]为不经过k点的最短路径
f[k1][x][k]+f[k1][k][y],为经过了 k 点的最短路)
然后把第一维优化掉

#include<bits/stdc++.h>

using namespace std;

const int maxn=100;
int n;
int a[maxn][maxn];

int main() {
    for (int k = 0; k < n; k++) {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                a[i][j] = min(a[i][j], a[i][k] + a[k][j]);
            }
        }
    }
    return 0;
}
posted @   zysssss  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示