我正在做这个问题http://www.spoj.com/problems/SHOP/。问题归结为计算加权图中2点之间的最短路径,其中verticecs有权重。我使用bfs https://code.hackerearth.com/ff00c2Z实现了一个工作解决方案,它工作正常关于样本测试用例,但是当我用Google搜索一些解决方案时给出WA判决 我看到实际的解决方案使用dijkstra。当我试图找到我的错误时,我看到我使用了deque而不是优先级队列在这种情况下它有什么区别?为什么deque不起作用?我的做法错了吗?那么如何使用BFS解决这个问题呢?
答案 0 :(得分:1)
您使用的是deque
而不是priority queue
,而您问的是什么问题?
首先在dequeue
中,您没有根据距离对此进行优先排序。第一个排队的对象或最后排队的对象总是被赋予最高的偏好,但可能是中间元素应该具有最高优先级(它可能成为最高优先级对象)的情况。这就是你获得WA的原因。
注意:我刚刚说明了使用dijkstra的先决条件。您也可以使用BFS
并使用Dijkstra
解决此问题。
注2:在需要时使用数据结构。你不需要在BFS中使用deque只需使用队列就足够了,否则处理大型代码会变得更加复杂。