dijkstra算法,用来求单源(即一个结点到其他结点的最短路径)最短路径,这里就不多解释了。
这个算法只适合求不存在负边权的图的单源最短路。
先讲一下该算法的思想。
1.设置一个距离数组dis[MAX]和一个标记访问的数组vis[MAX],源点s自身到自身的距离自然是0。即dis[s]=0,标记源点为已访问 vis[s]=true;
2.更新源点到其他顶点的距离。即如果存在与源点相连的顶点t,即更新dis[t]=map[s][t].(这里我们采用二维数组存图)
3.从距离数组中选出距离最小的并且未访问过的结点v(用来作为跳板)。标记v为访问过vis[v]=ture.
4.再次以v为跳板更新距离数组。
5.重复3,4步直到所有的点都访问过了。
下面举一个例子详细说明一下此过程,相信大家就会都记住它了