Dijkstra 不用标记数组的写法:
if (dist > dis[u])
continue;
其中:
- dist 表示当前循环遍历到的优先队列里的到u点的距离
- dis[u] 表示最终原点到u点的最短路径长度
我想请教一下用 u 更新与其连边的 v 时,是:
if (dist + w < dis[v])
{
dis[v] = dist + w;
}
还是:
if (dis[u] + w < dis[v])
{
dis[v] = dis[u] + w;
}
还是二者没有区别?
其中:
- w 是 u 与 v 连得边的长度
- dist, dis[u] 的意思已在上文给出