隣接行列のみを使用して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;
}