源点s为0,
集合S存放已经求得最短路径的终点。
d[i]表示从源点s到i的当前最短路径长度。
path[i]存放从源点s到节点i的当前最短路径上,节点i的前一个节点
inS[i]表示i节点是否已经在集合S中
初始d[]为 0 50 10 MAX 70 MAX,
path[]为 -1 0 0 -1 0 -1,
inS[]为 1 0 0 0 0 0
然后从d[]中找出最小值10,对应的节点为2号节点,把2号节点也放入集合S,
inS[]变为1 0 1 0 0 0,
然后更新d[] 0 50 10 25 70 MAX,path[] -1 0 0 2 0 -1。依此规律可得下面的表
最后得到单源最短路径。下面是代码实现:
const int INFTY = 1000;
template<class T>