求所有最短路径可以如下:
i)使用Dijkstra算法可以算出所有点到A的最短距离,即点x到A的最短距离为d(x)
ii)同样使用Dijkstra算法可以算出所有点到B的最短距离,即点x到A的最短距离为e(x)
这时必然有d(B)=e(A)
Empty Stack S;
从B开始出发,进行深度优先遍历,调用函数Search(B);
Function Search(x){
Push x into stack S;
For each y, y是x的邻居
IF y = A THEN
输出Stack S中所有元素和y,这是一个解.
continue;
END IF
IF(e(x)+d(y)=d(B)) THEN
Search(y);
End If
End For
Pop x from stack S
End Function