floyd :

1
2
3
4
5
6
7
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]);
}
}
}

当枚举到 k 时,d[i][j] 表示只经过 1~k 的 i 到 j 的最短路径

同余最短路 P3403