floyed-多源汇聚最短路

  1. 时间复杂度O(n^3)
  2. 动态规划
  3. dkij = min(dk-1ij,dk-1ik + dk-1kj)
  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;
}
相关推荐
彧azz4 分钟前
算法设计与分析:贪心与动态规划
数据结构·学习·算法·贪心算法·动态规划
Beyond_System|系统之外1 小时前
【学编程】Python基础编程题100道(21-60)
开发语言·python·算法
漂流瓶jz3 小时前
UVA-1442 洞穴 题解答案代码 算法竞赛入门经典第二版
c++·算法·题解·aoapc·算法竞赛入门经典·uva
叠层归一研究院4 小时前
基于极限自指的叠层归一宇宙结构理论——无元外部封闭系统的内生区分模型
人工智能·经验分享·算法·agi
Selvaggia5 小时前
Diffusion Model 的基本原理与模型架构
算法
wabs6666 小时前
关于二叉树【力扣572.另一棵树的子树的思考】
数据结构·c++·算法·leetcode·二叉树
hanlin036 小时前
刷题笔记:力扣第41题-缺失的第一个正数
笔记·算法·leetcode
shehuiyuelaiyuehao7 小时前
算法50,分治归并,数组中的逆序对
java·算法
阳明山水8 小时前
校准分位数驱动智能库存决策
人工智能·深度学习·算法·机器学习·架构
别动我齐刘海9 小时前
ROS2 Jazzy + C++ 实战路线——进阶学习3
c++·人工智能·vscode·python·算法·机器学习·机器人