简单的图论问题之单源最短路dijkstra算法
2021-04-14 09:26
标签:while 起点 优先队列 namespace void 编号 sizeof names 扫描 算法思想: 给定一张n个点,m条边的图,起点为s。求起点s到图中所有点的最短路径(单源最短路。dis[i]表示从起点到i的最短距离。vis[i]表示此点是否已被标记确定为最短。 1、初始化dis[s]=0,其余结点dis为正无穷大。 2、找到一个未被标记的、dis[x]最小的结点x,标记x。 3、扫描结点x的所有出边(x,y,z),若dis[y]>dis[x]+z,则用dis[x]+z更新dis[y]。 4、重复2、3步骤,知道所有点均被标记。 复杂度:O(n^2)。 优化:优先队列(堆)。 https://www.luogu.com.cn/problem/P4779 对dis数组进行维护,加快获取最小值以及执行一条边的扩展与更新。 代码: 简单的图论问题之单源最短路dijkstra算法 标签:while 起点 优先队列 namespace void 编号 sizeof names 扫描 原文地址:https://www.cnblogs.com/weijianzhen/p/13338024.htmlSolution: Dijkstra (大概读作:迪杰斯特拉?)
?```#include
#include
文章标题:简单的图论问题之单源最短路dijkstra算法
文章链接:http://soscw.com/index.php/essay/75597.html