O(E)做法
当d[]数组求出来后,假设从k出发,可以通过找出满足d[j]=d[k]+cost[k][j]的边cost[k][j]来找到前趋节点j,因此通过不断寻找前趋节点就能还原出最短路.
O(V)做法
设一个prev[]数组,prev[j]表示j的前趋,每次当更新最短路时就更新prev数组,全部更新完后,通过不断找prev[j]直到j变为s就能还原出最短路.
当d[]数组求出来后,假设从k出发,可以通过找出满足d[j]=d[k]+cost[k][j]的边cost[k][j]来找到前趋节点j,因此通过不断寻找前趋节点就能还原出最短路.
设一个prev[]数组,prev[j]表示j的前趋,每次当更新最短路时就更新prev数组,全部更新完后,通过不断找prev[j]直到j变为s就能还原出最短路.
转载于:https://www.cnblogs.com/VBEL/p/11241299.html