dijkstra算法+堆优化 ///各种被坑~~~

来源:互联网 发布:php 图片处理类 编辑:程序博客网 时间:2024/06/08 16:47
主要思想:在选取当前距离最小点时,用堆的方法实现选最小点上时间的优化。
新手第一次写,各种被坑!!!
1、一定要用最小堆从堆顶取值,而不能用最大堆取排在最后的值,因为排在最后的值不一定是最小的。
2、因为不能在调整堆的时候直接改变dis[]的值(如果改变的话在输出的时候会乱掉..),所以应该只是借助dis[]的值去调整顶点的位置,所以需要一个数组(从1到n代表堆的位置,每个位置保存当前在这个位置上的顶点编号)。而函数需要传入该顶点所在的堆的位置,所以有需要一个数组(从1到n代表每个顶点,每个位置保存该顶点所在堆中的位置。)
3、从堆顶取值和最后交换,在将堆顶shiftdown。
4、中间更改了某一个点的dis值后,需要将这个点shiftup。
5、最最最被坑的一点,感觉自己智商堪忧,竟然在把局部变量改成全局变量时,忘记删掉原来的局部变量了(........................................)几乎将每一步都printf出来才发现这个问题。


0 0
原创粉丝点击