1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 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]); } 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]
|