整理日期按学习顺序编排,不代表原始发表时间。实际整理于 2026-10-23。难度为阅读建议,可从 ACM 学习索引 按阶段阅读。12345678910111213141516void 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]);}init(){ 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;}存边方式: d[a][b] = min(d[a][b], w);# 如果是无向边需要加d[b][a]