实现(第 1 部分)
Coddy Bellman-Ford 算法:图算法 课程的第 5 课,共 9 课。
首先,对所有边进行一次松弛操作。
挑战
中等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;
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
Bellman-Ford 算法:图算法中的所有课
自己练习: C 在线编译器