Dijkstra是一个非常不错的最短路算法,它使用两层循环进行枚举,通过每次更新蓝白点的方式更新最短路,时间复杂度为O(n^2),优于floyd的O(n^3),不过只能用于计算单源最短路,而且无法处理负权边. 今天我们尝试用堆来优化它.这里我们使用了STL中的set和pair.set本身相当于一个小根堆,内部自动从小到大排序.(据说内部使用平衡树实现?蒟蒻瑟瑟发抖.)操作方式大致就是insert(插入)和erase(删除),不过他会把相同的数据融合到一起,如果不想这样可以使用multiset.对…