堆优化 Dijkstra 代码细节求助
  • 板块学术版
  • 楼主__PRO__
  • 当前回复2
  • 已保存回复3
  • 发布时间2023/10/30 20:37
  • 上次更新2023/10/30 21:33:26
查看原帖
堆优化 Dijkstra 代码细节求助
534597
__PRO__楼主2023/10/30 20:37

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] 的意思已在上文给出
2023/10/30 20:37
加载中...