上篇博客大家学习了最短路的两种基本算法,忘了告诉大家,floyd可以完成有负权值的最短路,而dijkstra则不行。若要想要更优的进行负权值最短路,请期待我的SPFA详解。
现在开始堆优化dijkstra的讲解。
其实只要理解了dijkstra的本质,这也就不难了,就是把查询最小dis值的过程用堆实现即可。具体代码如下:
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
int n,num,tree[10000][10],map[1000][1000],book[1000],dis[10