约 10 分钟
Floyd 只有简洁的三重循环:for k … for i … for j: d[i][j]=min(d[i][j], d[i][k]+d[k][j]);。含义是“允许用前 k 个点做中转”。注意 k 必须在最外层。总复杂度 O(n³)。
for k … for i … for j: d[i][j]=min(d[i][j], d[i][k]+d[k][j]);
Floyd 三重循环里,代表“中转点”的循环变量放在第几层?
登录 后可看答案