![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
最短路
KirinSB
这个作者很懒,什么都没留下…
展开
-
HDU 2544 最短路(最短路&Floyd)题解
思路:Floyd模板题,注意一下Floyd核心的三个循环,顺序不要变,我们不能把k放在最内层。因为Floyd是通过不断遍历查找是否有更小的两个路径拼起来能比当前小,如果k在最内层,那么我们就会提前算好ij的最小路径,但是此时还有很多其他路径没有合并,无法保证这是最小的。Floyd可以用来做多源最短路问题,复杂度O(n^3)参考:彻底弄懂最短路径问题代码:#include<c...原创 2018-07-31 11:19:43 · 194 阅读 · 0 评论 -
POJ 2253 Frogger(最短路&Floyd)题解
题意:想给你公青蛙位置,再给你母青蛙位置,然后给你剩余位置,问你怎么走,公青蛙全力跳的的最远距离最小。思路:这里不是求最短路径,而是要你找一条路,青蛙走这条路时,对他跳远要求最低。这个思想还是挺好迁移的,原来我们用mp[i][j]表示i到j最短路径,那么我们现在用它表示i到j最大步伐,然后每次比较,只要最大步伐比他小,那么我们就走新的路。注意最后是mp[1][2],一直mp[1][n]没改无限...原创 2018-07-31 15:39:53 · 197 阅读 · 0 评论 -
POJ 3268 Silver Cow Party(最短路&Dijkstra)题解
题意:有n个地点,有m条路,问从所有点走到指定点x再走回去的最短路中的最长路径思路:用Floyd超时的,这里用的Dijkstra。Dijkstra感觉和Prim和Kruskal的思路很像啊。我们把所有点分为两个集合:S(和源点在同一集合),T(其余点),用dis数组表示每个点到S的最短距离,vis数组记录这个点是否在S中。我们每次找出在T的一个和S距离最短的点,加到S中,这个距离就是他到源...原创 2018-07-31 19:11:37 · 212 阅读 · 0 评论 -
POJ 1797 Heavy Transportation(最短路&Dijkstra变体)题解
题意:给你所有道路的载重,找出从1走到n的所有路径中载重最大的,即路径最小值的最大值。思路:和之前的POJ3268很像。我们用Dijkstra,在每次查找时,我们把最大的先拿出来,因为最大的不影响最小值,然后我们更新的时候,如果当前承重比我们新开辟的路的承重的能力差,那就替换成新的。注意题目所给数据有重边。代码:#include<cstdio>#include<...原创 2018-07-31 20:14:04 · 202 阅读 · 0 评论 -
POJ 1860 Currency Exchange(最短路&spfa正权回路)题解
题意:n种钱,m种汇率转换,若ab汇率p,手续费q,则b=(a-q)*p,你有第s种钱v数量,问你能不能通过转化让你的s种钱变多?思路:因为过程中可能有负权值,用spfa。求是否有正权回路,dis[s]是否增加。把dis初始化为0,然后转化,如果能增大就更新。每次都判断一下dis[s]。参考:最快最好用的——spfa算法代码:#include<cstdio>#inc...原创 2018-08-01 11:18:50 · 304 阅读 · 0 评论 -
POJ 3259 Wormholes(最短路&spfa正权回路)题解
题意:给你m条路花费时间(双向正权路径),w个虫洞返回时间(单向负权路径),问你他能不能走一圈回到原点之后,时间倒流。思路:题意有点难看懂,我们建完边之后找一下是否存在负权回路,存在则能,反之不能。判断负权回路可以用一个cnt,这个spfa板子里有。代码:#include<cstdio>#include<set>#include<vector>...原创 2018-08-01 21:44:07 · 206 阅读 · 0 评论