最短路径
也道长
6
展开
-
Floyd-Warshall Algorithm
基本思想:最开始只允许进过1号顶点进行中转,接下来只允许1和2号顶点进行中转......允许经过1~n所有顶点进行中转,求任意两点之间的最短路程。用一句话概括就是:从i号顶点到j号顶点只经过前k号点的最短路程。核心代码: for (int k=1; k<=n; i++) for (int i=1; i<=n; i++) for (int原创 2017-07-26 07:27:48 · 866 阅读 · 0 评论 -
最短路径算法对比分析
最短路径算法对比分析FloydDijkstraBellman-Ford队列优化Bellman-Ford空间复杂度o(N^2)o(M)o(M)o(M)时间复杂度o(N^3)o((M+N)logN)o(NM)最坏情况o(NM)适用情况稠密图和顶点关系密切稠密图和顶原创 2017-07-27 07:27:39 · 428 阅读 · 0 评论 -
迷宫游戏
1459 迷宫游戏基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注你来到一个迷宫前。该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数。还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间。游戏规定了你的起点和终点房间,你首要目标是从转载 2017-07-27 21:56:06 · 459 阅读 · 0 评论 -
Bellman-Ford Algorithm
Bellman-Ford AlgorithmDijkstra算法虽然好,但是它不能解决带负权边,Floyd-Warshall虽然简单但时间复杂度高,而Bellman-Ford 就是那个perfect。核心代码:for (int k=1; k<=n-1; k++) for (int i=1; i<=m; i++) if(dis[v[i]]>原创 2017-07-26 07:43:50 · 431 阅读 · 0 评论 -
Dijkstra's Algorithm分析以及其优化
Dijkstra's Algorithm传统的Dijkstra:适用于单源无负权边最短路问题。算法步骤:a.初始时,S只包含源点,即S={v},v的距离为0。U包含除v外的其他顶点,即:U={其余顶点},若v与U中顶点u有边,则u,v>正常有权值,若u不是v的出边邻接点,则u,v>权值为∞。b.从U中选取一个距离v最小的顶点k,把k,加入S中(该选原创 2017-07-25 21:57:44 · 760 阅读 · 0 评论 -
Bellman-Ford的队列优化
Bellman-Ford的队列优化Bellman-Ford算法的另一种优化:每次仅对最短路程发生变化的点的相邻边执行松弛操作。每次选取队首顶点u,对顶点u的所有出边进行松弛,例如u->v的边,如果通过u->v这条边使得源点到顶点v的最短路变短,且顶点v不在当前队列中,就将v放入队尾。需要注意的是,相同的点不能再次入队,所以我们需要一数组来判断是否已入过队了。在对顶点u的所有出边原创 2017-07-27 10:29:04 · 332 阅读 · 0 评论 -
藏宝图(蓝桥杯模拟5)
蒜头君得到一张藏宝图。藏宝图是一个 10 \times 1010×10 的方格地图,图上一共有 1010 个宝藏。有些方格地形太凶险,不能进入。整个图只有一个地方可以出入,即是入口也是出口。蒜头君是一个贪心的人,他规划要获得所有宝藏以后才从出口离开。藏宝图上从一个方格到相邻的上下左右的方格需要 11 天的时间,蒜头君从入口出发,找到所有宝藏以后,回到出口,最少需要多少天。解析: 思路...原创 2018-03-28 12:07:35 · 332 阅读 · 0 评论