对于分配,我需要使用实现为最小堆的优先级队列来实现 Dijkstra 算法。我已经有一个实现,其中我使用距离表和未处理顶点的无序数组。(如此处页面底部所述)。
下面给出了一个示例输入文件,其中第一行是顶点数,之后的每一行是:源、目标、权重。
3
1 2 3
3 2 1
1 3 1
我最初的想法是将图中的每条边视为堆中的一个节点,但这是不对的,因为其中一个测试文件有 15677372 条边,如果没有立即的段错误,我什至无法制作那么大的数组。在使用未处理的顶点数组实现该方法后,似乎我需要以某种方式用堆替换该数组,但我不知道该怎么做。
谁能指出我正确的方向?