对于给定的带权有向图G和源点v,求从v到G中其余各顶点的最短路径。该算法是一个按路径长度递增的次序产生最短路径的算法。
以下代码包含生成有向带权图,Dijkstra算法的完整步骤。请参考【动画演示Dijkstra算法】。
代码说明几点:
1.dist[MaxVertexNum]; //元素dist[i]表示当前所找到的从源点v到终点vi的最短路径的长度
2.path[MaxVertexNum]; //元素path[i]是一个串,表示当前所找到的从源点v到终点vi的最短路径.若没有弧,则置为空串。
3.s[MaxVertexNum]; //存放源点和已经生成的终点(即集合S),初态为只有一个源点v
初始化带权有向图如下:
完整的实现代码如下:
程序测试结果如下: