【发布时间】:2014-06-30 04:33:15
【问题描述】:
我正在尝试实现 Dijkstra 的算法,但遇到了一些麻烦。
void Graph::Dijkstra(int source)
{
// Initialize single source
[...]
// Initialize a priority queue with all vertices
[...]
// Main loop
while (!Queue.empty())
{
int u = Queue.top();
Queue.pop();
// Relax the edges
[...]
}
}
在源顶点之后,我的代码总是选择一个距离为无限 (100000) 的顶点,即使还有其他非无限距离的顶点。
虽然由于优先级队列有指向我的顶点的指针,但每次我更改顶点的距离 (v.d) 时它都会更新。
【问题讨论】:
-
这里有很多关于这个主题的问题和答案(只需查看右侧的相关部分)。请在询问之前进行更彻底的研究!
标签: c++ priority-queue dijkstra