搜索与图论——Floyd算法求最短路

floyd算法用来求多源汇最短路

用邻接矩阵来存所有的边

时间复杂度O(n^3)

#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;

const int N = 20010,INF = 1e9;

int n,m,k;
int g[N][N];

void floyd(){
    for(int k = 1;k <= n;k ++ ){
        for(int i = 1;i <= n;i ++ ){
            for(int j = 1;j <= n;j ++ ){
                g[i][j] = min(g[i][j],g[i][k] + g[k][j]);
            }
        }
    }
}

int main(){
    cin >> n >> m >> k;
    for(int i = 1;i <= n;i ++ ){
        for(int j = 1;j <= m;j ++ ){
            if(i == j) g[i][j] = 0;
            else g[i][j] = INF;
        }
    }
    for(int i = 0;i < m;i ++ ){
        int x,y,z;
        cin >> x >> y >> z;
        g[x][y] = min(g[x][y],z);
    }
    floyd();
    while(k -- ){
        int x,y;
        cin >> x >> y;
        if(g[x][y] > INF / 2) cout << "impossible" << endl; //INF还是要/2,考虑到可能有负权边的情况
        else cout << g[x][y] <<endl;
    }
    return 0;
}

相关推荐

  1. 算法————路径——Floyd / 传递闭包

    2024-04-01 23:16:02       51 阅读
  2. folyd算法路径

    2024-04-01 23:16:02       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-01 23:16:02       91 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-01 23:16:02       97 阅读
  3. 在Django里面运行非项目文件

    2024-04-01 23:16:02       78 阅读
  4. Python语言-面向对象

    2024-04-01 23:16:02       88 阅读

热门阅读

  1. 常用的设计模式(单例模式和工厂模式)

    2024-04-01 23:16:02       40 阅读
  2. 使用 SQLite数据库,磁盘数据库,也叫本地数据库

    2024-04-01 23:16:02       38 阅读
  3. 关于过四级的一些神级技巧

    2024-04-01 23:16:02       37 阅读
  4. FastAPI+React全栈开发12 搭建FastAPI开发环境

    2024-04-01 23:16:02       34 阅读
  5. 规则引擎QLExpress和Drools的对比

    2024-04-01 23:16:02       39 阅读
  6. 5.控制结构,if、switch、for的使用【go】

    2024-04-01 23:16:02       29 阅读
  7. python 埃氏筛法判断一个数是否为素数

    2024-04-01 23:16:02       40 阅读
  8. ChatGPT:让学术写作更高效

    2024-04-01 23:16:02       36 阅读
  9. 大模型日报2024-04-01

    2024-04-01 23:16:02       44 阅读