You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Floyd-Warshall实现APSP在n≥4时出错,求排查(UVA-13211)

UVA-13211 (Geonosis) 全源最短路径实现错误,n≥4时结果异常

我在做VJudge上的UVA-13211(Geonosis)题目,题目要求按指定顺序移除节点,每次移除节点前,累加所有未移除节点的有序点对最短路径之和。

我先用Floyd-Warshall算法实现全源最短路径(APSP),测试发现节点数n<4时结果正确,但n≥4时输出完全错误。之后尝试改用Dantzig算法,结果依然出错,实在定位不到问题,附上代码求帮忙排查。

#include <iostream>
#include <vector>
#include <climits>
using namespace std;

const int MAXN = 105;
long long dist[MAXN][MAXN];
bool removed[MAXN];

int main() {
    int n, m;
    cin >> n >> m;
    // 初始化距离矩阵
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= n; ++j) {
            dist[i][j] = (i == j) ? 0 : LLONG_MAX;
        }
        removed[i] = false;
    }
    // 读入边
    for (int i = 0; i < m; ++i) {
        int u, v;
        long long w;
        cin >> u >> v >> w;
        if (w < dist[u][v]) {
            dist[u][v] = w;
            dist[v][u] = w;
        }
    }
    // Floyd-Warshall计算全源最短路径
    for (int k = 1; k <= n; ++k) {
        for (int i = 1; i <= n; ++i) {
            for (int j = 1; j <= n; ++j) {
                if (dist[i][k] != LLONG_MAX && dist[k][j] != LLONG_MAX) {
                    if (dist[i][j] > dist[i][k] + dist[k][j]) {
                        dist[i][j] = dist[i][k] + dist[k][j];
                    }
                }
            }
        }
    }
    // 读入移除顺序
    vector<int> order(n);
    for (int i = 0; i < n; ++i) {
        cin >> order[i];
    }
    long long total = 0;
    vector<long long> results;
    // 按顺序移除节点,每次移除前计算当前未移除节点的有序点对路径和
    for (int idx = 0; idx < n; ++idx) {
        int u = order[idx];
        // 计算当前未移除节点的路径和
        long long sum = 0;
        for (int i = 1; i <= n; ++i) {
            if (removed[i]) continue;
            for (int j = 1; j <= n; ++j) {
                if (removed[j]) continue;
                if (dist[i][j] != LLONG_MAX) {
                    sum += dist[i][j];
                }
            }
        }
        results.push_back(sum);
        removed[u] = true;
    }
    // 输出结果
    for (long long s : results) {
        cout << s << endl;
    }
    return 0;
}

内容的提问来源于stack exchange,提问作者str8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 14:05:07