存储最短路径

时间:2013-12-02 17:53:53

标签: c++ graph mfc floyd-warshall

我指的是这个教程:http://www.geeksforgeeks.org/dynamic-programming-set-16-floyd-warshall-algorithm/

提交人提到:

  

我们可以通过将前任信息存储在单独的2D矩阵中来修改解决方案以打印最短路径。

对这个前任信息有点困惑。

那么,如何存储以后显示的路径?

1 个答案:

答案 0 :(得分:0)

如果要重建从节点x_1到x_n的路径,可以转到节点x_2并重建从x_2到x_n的路径。如果x_1改变,则从x_2到x_n的路径不会改变。因此,您要存储的是从x_1到x_n时有关下一个节点的信息。这可以通过| V |来完成x | V |矩阵,其中entry [i] [j]给出从i到j的路径上的下一个节点的索引。

在代码的这一部分

if (dist[i][k] + dist[k][j] < dist[i][j])
    dist[i][j] = dist[i][k] + dist[k][j];

你应该为下一个节点矩阵添加一个赋值。