Menu
CoddyTech

实现(第 1 部分)

Coddy Bellman-Ford 算法:图算法 课程的第 5 课,共 9 课。

首先,对所有边进行一次松弛操作。

challenge icon

挑战

中等

Bellman-Ford 只需重复执行同一个操作:遍历所有边进行一次松弛。我们来实现单次遍历。

编写一个名为 relaxAll 的函数,接收 n、扁平的 edges 数组(每 3 个元素表示一条有向边,边权可能为负数)和 source。先将 dist[source] = 0,其他距离都设为无穷大,然后按给定顺序对每条边松弛一次,并返回得到的距离。对于仍未到达的顶点,使用 -1 表示。

由于这里只进行一次遍历,只通过多条边才能到达的顶点仍可能是 -1。这是预期结果。

亲手试试

#include <stdlib.h>

int* relaxAll(int n, int* edges, int edges_size, int source, int* returnSize) {
    // 在这里编写代码
    *returnSize = 0;
    return edges;
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

Bellman-Ford 算法:图算法中的所有课

自己练习: C 在线编译器