老师,我有一个很大的疑问。就是从最小堆里取边,如果取的不是横切边,老师写的代码是continue掉。但是,再次进入循环,取的还是那个不是横切边的最小的边呀
来源:8-3 Prim算法的第一个实现 (Lazy Prim)
danzh2000
2019-01-11
波波老师,我有一个很大的疑问。就是从最小堆里取边,如果取的不是横切边,老师写的代码是continue掉。但是,再次进入循环,取的还是那个不是横切边的最小的边呀,然后就死循环掉了。。
我明白了,,我以为,老师是一次性把所有的边放进待选队列里的,不是,其实是选边后,再把其连接的边放进队列。。而且,老师写的从堆顶取,取了后pop掉了。。我是用priority_queue写的代码,top()的时候不pop,,所以傻傻的以为,老师的extractMin()等价于priority_queue.top(),只取不pop,,,现在都弄明白啦
写回答
1回答
-
赞自己调试搞明白问题。进步就发生在这个过程中!:)
继续加油!:)
012019-01-12
相似问题