找回密码
 中文实名注册
搜索
查看: 279|回复: 0

C10第7章 弗洛伊德Floyd 最短路

[复制链接]

731

主题

577

回帖

2万

积分

管理员

积分
24978
发表于 2025-8-20 10:52:34 | 显示全部楼层 |阅读模式
3 3
1 2 5
2 3 5
3 1 2

[C++] 纯文本查看 复制代码
#include <iostream>
#include <cstring>
using namespace std;
const int N = 101;
int g[N][N];
void floyd(int n) {
    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() {
    memset(g, 0x3f, sizeof(g));
    for (int i = 0; i < N; ++i) {
        g[i][i] = 0;
    }
    int n, m;
    int u, v, w;
    cin >> n >> m;
    while (m--) {
        cin >> u >> v >> w;
        g[u][v] = g[v][u] = w;
    }
    floyd(n);
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= n; ++j) {
            cout << g[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 中文实名注册

本版积分规则

快速回复 返回顶部 返回列表