算法板子
算法板子

#include <bits/stdc++.h>
using namespace std;
const int N = 205;
int d[N][N];
int n, m, q;
int INF = 1e9;
void floyd() {
    for (int k = 1; k <= n; ++k) {
        for (int i = 1; i <= n; ++i) {
            for (int j = 1; j <= n; ++j) {
                d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
            }
        }
    }
};
int main() {
    
    cin >> n >> m >> q;
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= n; ++j) {
            if (i == j) {
                d[i][j] = 0;
            } else {
                d[i][j] = INF;
            }
        }
    }
    
    while (m--) {
        int x, y, z;
        scanf("%d%d%d", &x, &y, &z);
        d[x][y] = min(d[x][y], z);
    }
    
    floyd();
    
    while (q--) {
        int x, y;
        scanf("%d%d", &x, &y);
        if (d[x][y] > INF / 2) {
            puts("impossible");
        } else {
            printf("%d\n", d[x][y]);
        }
    }
    return 0;
}
本文为原创文章,欢迎分享,勿全文转载,如果内容你实在喜欢,可以加入收藏夹,说不定哪天故事又继续更新了呢。
本文地址:https://qoogle.top/shortest-path-by-floyd/
最后修改日期:2020年8月13日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。