floyed-多源汇聚最短路

  1. 时间复杂度O(n^3)
  2. 动态规划
  3. d[k][i][j] = min(d[k-1][i][j],d[k-1][i][k] + d[k-1][k][j])
  4. 可以简化为
  5. d[i][j] = min(d[i][j], d[i][k] + d[j][k]) //考虑经过k点时的最短路

代码

cpp 复制代码
#include<iostream>
#include<algorithm>
#include<cstdio>

using namespace std;

const int N = 210;

int g[N][N];

int n;

void floyed(){
    
    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(){
    int m,k;
    cin>>n>>m>>k;
    
    int x, y, z;
    
    //考虑重边和自环
    
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= n; j++){
            if(i == j){
                g[i][j] = 0; //去掉环 
            }else g[i][j] = 0x3f3f3f3f;
        }
    }
    
    for(int i = 0; i < m; i++){
        cin>>x>>y>>z;
        g[x][y] = min(g[x][y],z);
        
    }
    int a, b;
    int ans;
    
    floyed();
    for(int i = 0; i < k; i++){
        cin>>a>>b;
        if(g[a][b] > 0x3f3f3f3f/2){
            cout<<"impossible" << '\n';
        }else cout<< g[a][b]<< '\n';
        
    }
    
    
    
    return 0;
}
相关推荐
飞Link11 分钟前
深度解析 NT-Xent:对比学习中的标准化温度交叉熵损失
python·算法·数据挖掘·回归
饿了就去喝水13 分钟前
C语言笔试程序题
c语言·数据结构·算法
故事和你9116 分钟前
sdut-程序设计基础Ⅰ-实验三while循环(1-10)
开发语言·数据结构·c++·算法·类和对象
再一次等风来19 分钟前
声源定位算法5----SRP-PHAT(1)
算法·信号处理·srp
Yupureki20 分钟前
《算法竞赛从入门到国奖》算法基础:数据结构-并查集
c语言·数据结构·c++·算法
DeepModel21 分钟前
【概率分布】伯努利分布详解
算法·概率论
再一次等风来21 分钟前
声源定位算法5----SRP-PHAT(2)
算法·信号处理·srp·声源定位·gcc-phat
CappuccinoRose29 分钟前
MATLAB学习文档 - 汇总篇
学习·算法·matlab
菜鸟小九30 分钟前
hot100(31-40)
java·算法
gfdhy1 小时前
【Linux】服务器网络与安全核心配置|静态IP+SSH加固+防火墙,公网服务器必学实操
linux·服务器·网络·tcp/ip·算法·安全·哈希算法