跳到正文
信奥逐课

第 380 课

Floyd

🔵 基础 约 7 分钟

一句话理解

Floyd:三重循环,任意点对最短路。

为什么要学

n≤400。

讲解

for k for i for j 松弛 i->k->j。k 必须在最外。

例子

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 是允许使用的中间点编号上限。

常见错误

练习 做完再看下一课

Floyd 最外层循环的是中间点 ____

在线练习 C++ 在浏览器里编译,代码不会上传

Ctrl / ⌘ + Enter 运行 · Tab 缩进

输出
 

进度保存在本机浏览器里。

左右方向键也可翻课