我正在尝试仅使用邻接矩阵来实现 Ford-Fulkerson/Edmonds-Karp。我唯一无法编程的是使用 BFS 计算最短路径的函数。查看是否确实存在最短路径的功能很好,但是是否也可以获得最短路径?或者是用 BFS 获得最短路径以使用某种父指针并向后遍历以获得路径的唯一方法?
这是我查看路径是否存在的代码:
public static boolean existsPathFromSourceToSinkInGf(int Gf[][])
{
LinkedList<Integer> queue = new LinkedList<Integer>();
queue.add(0);
while (!queue.isEmpty())
{
int v = queue.remove();
if (v == sink) return true;
for (int i = 0; i < 5; i++)
{
if (Gf[v][i] != 0)
{
if (!queue.contains((Integer)i))
{
queue.add((Integer)i);
}
}
}
}
return false;
}