图论----最短路径
文章平均质量分 77
muximuxi525
有些事情暂时可以放下但是绝不能放弃
展开
-
Dijkstra Bellman-Ford SPFA 几种最短路径求法 基本理论
最短路问题一、概念:在图论中最短路径有着非常广泛的应用,而由于应用的方法不同也形成了多种求最短路径的方法,而对于不同类的问题虽然每种方法都可以用,不过各有其最优的实现方法。首先对于最短路径问题,可以分成如下几类:1. 求单源最短路径问题:这种问题是最短路径问题中最基本的问题了,其主要目的是求从一个固定源点开始到每一个点的最短路径;对于这个问题,所有的方法都适用;2. 求原创 2012-08-20 21:31:06 · 2460 阅读 · 0 评论 -
SPFA 算法详解( 强大图解,不会都难!)
适用范围:给定的图存在负权边,这时类似Dijkstra等算法便没有了用武之地,而Bellman-Ford算法的复杂度又过高,SPFA算法便派上用场了。 我们约定有向加权图G不存在负权回路,即最短路径一定存在。当然,我们可以在执行该算法前做一次拓扑排序,以判断是否存在负权回路,但这不是我们讨论的重点。算法思想:我们用数组d记录每个结点的最短路径估计值,用邻接表来存储图G。我们采取的方法是动态转载 2012-08-22 09:38:34 · 40302 阅读 · 10 评论 -
POJ3259 Wormholes(虫洞)(Bellman-floyd法解决)
题目大意:农夫FJ喜欢在自己的农场里面玩穿越,而虫洞-----就是就是一种是时间倒退的时光机(单向的)(A wormhole is very peculiar because it is a one-way path that delivers you to its destination at a time that is BEFORE you entered the wormhole!) 但原创 2012-08-20 22:01:23 · 2014 阅读 · 0 评论 -
POJ1511 SPFA经典题目
Orz,做这道题对我这个初学者来说真是呕心沥血了!写了一上午,然后调试了一下午。然后WA了3次!哇靠,就是因为坑爹的POJ数据,题目明白说了price的sum不会超int的但最后还是要用long long 才过!奶娘的! 在这里感谢羽哥的数据还有long long的提醒。 题目大意:发传单!怎么样选择路线 使得Acmers们在去 和回的过程 花掉的车费最少。思路:因为每个人负责一原创 2012-08-22 18:02:35 · 1594 阅读 · 0 评论 -
POJ 1797 Heavy Transportation
题目大意:谢谢羽哥提供的题目大意,哎,心寒了,英语太差了,对不起6级证书啊~~55~~题目大意就是求最大载重量,也就是求每条路径的最小值,所有的路径最小值的最大值~~思路:我怎么想都想不到地杰斯特拉上面啊~~55~~刚开始还以为是floyd,后来和杨烁讨论的时候像是最大生成树,最后好多博客都用变形dijkstra做了,55~~做的好不爽~~只是码代码~~思想不是自己的额~~就连一成都不原创 2012-09-01 22:38:39 · 706 阅读 · 0 评论 -
HDU1599 find the mincost route
题目大意&&思路:求出最小环,模板撸过~~~(floyd在求出最短路径的同时把最小环也求出来) AC program:#include#include #include #include #includeusing namespace std;#define inf 1000000000int mm[105][105];int dd[105][105]; int n,原创 2012-10-03 15:33:56 · 852 阅读 · 0 评论 -
POJ3259 Wormholes(虫洞)(SPFA解决)
题目大意&&思路:农夫玩穿越,找负环经典问题,思路一:SPFA轻松撸过:原理:某一个节点入队n次的话则存在负环。(200ms)思路二:Bellman-floyd 也OK:http://blog.csdn.net/kg_second/article/details/7888273 (其实在这道题思路二更快125ms,SPFA在数据大的时候才霸气尽出) AC program:#原创 2012-10-03 19:18:24 · 1375 阅读 · 0 评论 -
POJ2240 Arbitrage
题目大意&&思路:汇套问题,特殊的是会有自环(注意哦),搞的我RE了。固执的用SPFA去做,可惜还没写哈希,下次在完善哈希吧。小数据的题目用大数据的态度去做其实对这道题来说:主要是分析用什么来表示到其他节点 的问题,在这里用的是:dis[当前节点]*此节点到所有出边节点的汇率 和 出边节点的原汇率比较。大则改变。而至于自环问题,这是图论最简单的特殊情况,包括重边啊,有环啊,这些都得习惯啊原创 2012-10-03 23:25:35 · 829 阅读 · 0 评论 -
dijkstra
背景:求最短路径,我的第一篇最短路径小试牛刀。思维拓展:求最短路径有好几种算法,Dijkstra算法是没有负权路径求最短路径较好的算法之一, 思维过程:在S,V集合中,在V集合找出当前和S集合中最短距离的一点,并加入S集合中,迭代直到最后V集合为空。代码大妈:#includeusing namespace std;int t[原创 2012-07-07 21:45:04 · 735 阅读 · 0 评论 -
邻接表的基础阐述
在ACM比赛中,邻接表往往不是用类实现的,而是用数组模拟的。下面举个例子: 首先建立三个数组:head[N],next[E],adj[E],vv[E]。head[N]数组存储顶点表,adj[E]存储边表顶点,还有next[E]存储边表的结点的下一个。假如数据输入为: (为了方便描述,v0结点用1表示,v1结点用2表示——以此类推)a b W1 2 11原创 2012-07-09 18:15:33 · 1092 阅读 · 0 评论 -
POJ 3259 Wormholes(再续前章)
题目大意:bellman-ford模板题思路:以前是对着模板敲,时隔一年,自己温习了一边算法自己敲出来的,因为一个宏定义WA到想哭,至今没想清楚是什么意思.但终究是码出来了算法核心思想就是:第一重循环: 松弛n-1遍第二重循环: 扫描所有的边,每次松弛一下入度结点 松弛了n-1遍之后,肯定能求得最短距离了这时候如果再对所有的边再松弛一遍,如果还能够松弛话,则有负环否原创 2013-05-08 21:05:21 · 817 阅读 · 0 评论