简单最短路
Masker_43
这个作者很懒,什么都没留下…
展开
-
【A - Til the Cows Come Home】
写在前面的话:接下来是Kuangbin的专题二最短路。朴素的Dijkstra只写这一次,以后不出意外都默认是堆优化(当然是正确的堆优化啦)。这里首次提出点态的概念,目的是防止大家混淆,点态一般是指所定义的结构体,如本题中包含 id 和 dis 两个元素。点态可能有多个,点只能有一个。思路:无向正权图,求解最短路。Dijkstra。下面依次是朴素,虚假堆优化,弱智堆优化算法,和正确...原创 2019-05-19 23:06:51 · 204 阅读 · 0 评论 -
【E - Currency Exchange】
思路:-啊,做得好懵…N种货币就是N个地点,M家“银行”就是M条路,找最长路,使用 i-th 货币时可以得到的最多钱就是 dis[i]。判断最后回到原点时可不可以得到更多钱。并且要判断是否有正环,如果有正环就能得到无限多的钱。可是写的BELLMAN-FORD和SPFA运行时间完全一样啊…SPFA中对于 vis[i]++ 位置的判断也不知道是否正确。甚至当我写了一个SLF,时间没有丝毫变...原创 2019-05-23 14:12:11 · 359 阅读 · 0 评论 -
【F - Wormholes】
思路:判负环(最短路问题若成环一定是负环)。问题:没有保证环必须经过点1啊,我认为应该是遍历全部的联通块,最后判断有没有负环,怎么大家全都直接从1开始判负环了。我也还不会写,只好也打一个Bellman-Ford。500点,2500边,稠密图,用邻接表反而超时。代码:1235ms 1644kB//1235ms 1644kB#include <iostream>...原创 2019-05-23 16:14:15 · 186 阅读 · 0 评论 -
【M - 昂贵的聘礼】
思路:正权,单向,最短路,Dijkstra。关键在提取建图思想。第一次做以为酋长的地位一定最高,WA。枚举起始等级,AC。代码:WA:#include <iostream>#include <queue>#include <cstring>#define INF 0x3f3f3f3fusing namespace std;con...原创 2019-05-28 08:34:51 · 315 阅读 · 0 评论 -
【G - MPI Maelstrom】
思路:翻译题…翻译题…难道是我校被Q了吗?正权无向稠密图,求源点到所有点的最短路,输出最长一条的长度。使用:Dijkstra,邻接矩阵,atoi函数。代码:0ms 748kB//0ms 748kB#include <iostream>#include <cstdio>#include <algorithm>#include &...原创 2019-05-23 17:48:15 · 142 阅读 · 0 评论 -
【R - 0 or 1】
思路:真是一道神题。讲解:mengxiang000000的BLOG。Dijkstra,SPFA找环。把它想成直接给出邻接矩阵,因为是正权图,省去了很多麻烦。需要找出从1到N的最短路,含1的环+含N的环,较小的一个即为答案。需要找环也不是很好想,当然,如果连看成邻接矩阵都想得到,这里估计对你也不是问题。代码://670ms 1788kB #include <iost...原创 2019-05-30 18:31:46 · 202 阅读 · 0 评论 -
【H - Cow Contest】
思路:怎么可能有思路呜呜呜思路一:除了A可以打败B时,将 mp[A][B] 置1,其余全部为零,求最长路。注意:Floyd内的判断比较难想,需要手推一下,发现若不加判断会把不可达的点变可达,显然不可以。思路二:传递闭包。感谢chc960609的BLOG。代码:求最长路:125ms 712kB//125ms 712kB#include <iostream>...原创 2019-05-23 20:29:06 · 114 阅读 · 0 评论 -
【S - Layout】
算法:SPFA+SLF思路:差分约束,详见AndyZhang的BLOG。注意是可以直接建造负权路径的。发现负环,则是无解;dis[N]==INF,则是无穷解;有唯一解(本题中为最短路)输出 dis[N]。终于成功用SLF优化了SPFA!降低到了16ms。而且:LLL根本不优化,反而会降速到63ms。代码:朴素SPFA:47ms 828kB//47ms 828kB#...原创 2019-05-30 22:21:55 · 258 阅读 · 0 评论 -
【L - Subway】
算法:Dijkstra思路:只会走给出的坐标,所以把所有给出的坐标存成点再根据要求建边,求最短路即可。注意:“rounded to the nearest minute” 是四舍五入,要加上 0.5,再转换成 int 输出。不加 0.5 会 WA。map 的用法。代码:391ms 1164kB//391ms 1164kB#include <iostr...原创 2019-05-30 23:46:46 · 221 阅读 · 0 评论 -
【N - Tram】
POJ修好啦!思路:Dijkstra,正权单向图。仅权值有微小变化,非常简单。代码:16ms 752kB//16ms 752kB#include <iostream>#include <cstring>#include <queue>#define INF 0x3f3f3f3fusing namespace std;c...原创 2019-05-27 14:11:12 · 231 阅读 · 0 评论 -
【P - The Shortest Path in Nya Graph】
思路:Dijkstra,正权,双向(隐藏单向),最短路。首先我以为是同一层中的点之间距离全部为零,结果WA了。仔细想一遍题意:对某一层中的所有点任意选取一点,都可以从该点,花费C到达相邻层中的任意一点,并没有说同一层间的距离呀。正确题意:对任意一点(属于 A 层):它若想到该层中其它点有两种方法:通过 M extra edges,直接达到;先去到某相邻层 B,然后回到本...原创 2019-05-27 14:02:49 · 142 阅读 · 0 评论 -
【B - Frogger】
写在前面的话:以后定义走过的一整条路径为路;每两点间的直连路为径,不再重复说明。思路:正权,无向图,单源点。唯一的不同:路的总长是途径所有小径的长度的最大值,而非加和。明白了这一点,本题就没有难度了。dijkstra。补充:double类型一定不要用memset,置什么都不能用。被坑的很惨。可以最后在对距离开方,应该会优化一些,但是本来就是0ms,就不必改了。代码:0...原创 2019-05-20 14:11:42 · 194 阅读 · 0 评论 -
【I - Arbitrage】
写在前面的话:本题先后写了:邻接矩阵:Bell、SPFA、SPFA + SLF;邻接表:SPFA、SPFA+SLF思路:正权,单向,找正环(最长路)。原创 2019-05-24 13:41:50 · 156 阅读 · 0 评论 -
【J - Invitation Cards】
思路:正权最短路,全图一去一回。稀疏图要用邻接表,邻接表的反向建图方法:用三个数组(u[maxn]、v[maxn]、w[maxn])记录每一条路,然后重新录入。邻接矩阵的反向建图方法:矩阵转置(详见:Previous_BLO)。...原创 2019-05-24 17:18:03 · 139 阅读 · 0 评论 -
【C - Heavy Transportation】
思路:正权无向图,求最长路,路的长度由途经径的最小长度定义dijkstra。为什么这么慢?代码:1719ms 4704kB//1719ms 4704kB#include <iostream>#include <cstring>#include <algorithm>#include <queue>#define ...原创 2019-05-21 18:51:53 · 114 阅读 · 0 评论 -
【K - Candies】
思路:此题真的恐怖。心态得到了升华。差分约束类(详见:),正权单向最短路Dijkstra。我心目中的正解是两遍DIJKSTRA的,但是WA了。用 cin 关同步一直血T,scanf 就超快。没有必要用 pair,结构体比它快。全部松弛后再取值,中间取值由于判断次数过多,反而运行时间更长。代码:心目中的正解:WA#include <iostream>#incl...原创 2019-05-25 15:04:13 · 185 阅读 · 0 评论 -
【转载】《图论总结》
细语呢喃的BLOG。转载 2019-05-25 15:26:17 · 207 阅读 · 0 评论 -
【D - Silver Cow Party】
思路:正权,有向图,从每个点走到终点再返回是一条路,找所有N-1条路(N个点)中的最大值。自然想到可用Floyd-Warshall,也不出意料TLE。在Marvis code的BLOG找到正解:将每个点到定点的路径反向,转化为单源点到全图。此操作通过邻接矩阵的转置来实现。注意:多源点单终点类问题:通过对 mp[i][j] 进行矩阵转置解题。注意具体i,j的操作(如果 j 从 1 开...原创 2019-05-21 20:35:47 · 154 阅读 · 0 评论 -
【O - Extended Traffic】
思路:POJ 仍然没有修好…单源点,有向图,含负权,最短路。特殊之处在于,需要判断某个点是否在负环内。SPFA,邻接表,标记负环(DFS)。注意,标记负环的流程:找到一个负环内的点标记它,对它通往的所有点继续搜索并标记。(通往最先找到的点的那个点不能标记)。代码:44ms 2332kB#include <iostream>#include &l...原创 2019-05-26 20:13:10 · 173 阅读 · 0 评论 -
简单最短路
分析FLOYD、Dijkstra、SPFA算法。判断负环。判断图的连通性。传递闭包。原创 2019-06-29 20:26:23 · 135 阅读 · 0 评论