老师,我有一个很大的疑问。就是从最小堆里取边,如果取的不是横切边,老师写的代码是continue掉。但是,再次进入循环,取的还是那个不是横切边的最小的边呀

来源:8-3 Prim算法的第一个实现 (Lazy Prim)

danzh2000

2019-01-11

波波老师,我有一个很大的疑问。就是从最小堆里取边,如果取的不是横切边,老师写的代码是continue掉。但是,再次进入循环,取的还是那个不是横切边的最小的边呀,然后就死循环掉了。。


我明白了,,我以为,老师是一次性把所有的边放进待选队列里的,不是,其实是选边后,再把其连接的边放进队列。。而且,老师写的从堆顶取,取了后pop掉了。。我是用priority_queue写的代码,top()的时候不pop,,所以傻傻的以为,老师的extractMin()等价于priority_queue.top(),只取不pop,,,现在都弄明白啦

写回答

1回答

liuyubobobo

2019-01-12

赞自己调试搞明白问题。进步就发生在这个过程中!:)


继续加油!:)

0
1
danzh2000
嘿嘿谢谢波波老师!!超喜欢你的课!!
2019-01-12
共1条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程