ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

多源汇最短路(APSP问题)

2026/8/8 0:16:04 拓冰建站 浏览量
多源汇最短路(APSP问题)

多源汇最短路(APSP问题)

使用邻接矩阵存图,可以处理负权边,以 \(\mathcal{O}(N^3)\) 的复杂度计算。注意,这里建立的是单向边,计算双向边需要额外加边

const int N = 210;
int n, m, d[N][N];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;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, w; cin >> x >> y >> w;d[x][y] = min(d[x][y], w);}floyd();for (int i = 1; i <= n; ++ i) {for (int j = 1; j <= n; ++ j) {if (d[i][j] > INF / 2) cout << "N" << endl;else cout << d[i][j] << endl;}}
}