优先队列和双端队列

Priority queue and deque

我正在做这道题 http://www.spoj.com/problems/SHOP/ .The question boils down to calculating shortest path between 2 points in a weighted graph where verticecs have weights.i implemented a working solution using bfs https://code.hackerearth.com/ff00c2Z,它在样本测试用例上运行良好,但给出了 WA 判决,当我用谷歌搜索一些解决方案时 我看到实际的解决方案使用 dijkstra 。当我试图找出我的错误时,我看到我使用了双端队列而不是优先队列,在这种情况下它有什么区别?为什么双端队列不起作用?我的方法错了吗?那么如何使用 BFS 来解决这个问题呢?

您使用的是 deque 而不是 priority queue 并且您在问有什么问题吗? 首先,在 dequeue 中,您没有根据距离对事物进行优先排序。第一个入队对象或最后一个入队对象始终具有最高优先级,但中间元素可能具有最高优先级(它可能成为最高优先级对象),这就是您获得 WA 的原因。


注:我刚才说了使用dijkstra的前提条件。您还可以使用 BFSDijkstra.

解决此问题

注2:需要时使用数据结构。您不需要 BFS 中的双端队列,只需使用一个队列就足够了,否则处理大型代码会变得更加复杂。