0
我正在試圖使用鄰接矩陣來實現Ford-Fulkerson/Edmonds-Karp。唯一不能編程的是使用BFS計算最短路徑的函數。看看最短路徑實際存在的功能是好的,但是有可能獲得最短路徑嗎?或者是獲得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;
}
是的,你應該使用'parent'並且回溯得到數組。由於你的頂點是整數,所以它可以用一個實際上是'int []'的映射來完成 - 其中'parent [i] =節點i的父節點' – amit