
简单最短路
Masker_43
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【A - Til the Cows Come Home】
写在前面的话: 接下来是Kuangbin的专题二最短路。朴素的Dijkstra只写这一次,以后不出意外都默认是堆优化(当然是正确的堆优化啦)。 这里首次提出点态的概念,目的是防止大家混淆,点态一般是指所定义的结构体,如本题中包含 id 和 dis 两个元素。点态可能有多个,点只能有一个。 思路: 无向正权图,求解最短路。 Dijkstra。 下面依次是朴素,虚假堆优化,弱智堆优化算法,和正确...原创 2019-05-19 23:06:51 · 234 阅读 · 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 · 403 阅读 · 0 评论 -
【F - Wormholes】
思路: 判负环(最短路问题若成环一定是负环)。 问题:没有保证环必须经过点1啊,我认为应该是遍历全部的联通块,最后判断有没有负环,怎么大家全都直接从1开始判负环了。我也还不会写,只好也打一个Bellman-Ford。 500点,2500边,稠密图,用邻接表反而超时。 代码: 1235ms 1644kB //1235ms 1644kB #include <iostream>...原创 2019-05-23 16:14:15 · 220 阅读 · 0 评论 -
【M - 昂贵的聘礼】
思路: 正权,单向,最短路,Dijkstra。关键在提取建图思想。 第一次做以为酋长的地位一定最高,WA。 枚举起始等级,AC。 代码: WA: #include <iostream> #include <queue> #include <cstring> #define INF 0x3f3f3f3f using namespace std; con...原创 2019-05-28 08:34:51 · 346 阅读 · 0 评论 -
【G - MPI Maelstrom】
思路: 翻译题…翻译题… 难道是我校被Q了吗? 正权无向稠密图,求源点到所有点的最短路,输出最长一条的长度。 使用:Dijkstra,邻接矩阵,atoi函数。 代码: 0ms 748kB //0ms 748kB #include <iostream> #include <cstdio> #include <algorithm> #include &...原创 2019-05-23 17:48:15 · 167 阅读 · 0 评论 -
【R - 0 or 1】
思路: 真是一道神题。 讲解:mengxiang000000的BLOG。 Dijkstra,SPFA找环。 把它想成直接给出邻接矩阵,因为是正权图,省去了很多麻烦。需要找出从1到N的最短路,含1的环+含N的环,较小的一个即为答案。需要找环也不是很好想,当然,如果连看成邻接矩阵都想得到,这里估计对你也不是问题。 代码: //670ms 1788kB #include <iost...原创 2019-05-30 18:31:46 · 230 阅读 · 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 · 137 阅读 · 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 · 295 阅读 · 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 · 251 阅读 · 0 评论 -
【N - Tram】
POJ修好啦! 思路: Dijkstra,正权单向图。 仅权值有微小变化,非常简单。 代码: 16ms 752kB //16ms 752kB #include <iostream> #include <cstring> #include <queue> #define INF 0x3f3f3f3f using namespace std; c...原创 2019-05-27 14:11:12 · 258 阅读 · 0 评论 -
【P - The Shortest Path in Nya Graph】
思路: Dijkstra,正权,双向(隐藏单向),最短路。 首先我以为是同一层中的点之间距离全部为零,结果WA了。仔细想一遍题意:对某一层中的所有点任意选取一点,都可以从该点,花费C到达相邻层中的任意一点,并没有说同一层间的距离呀。 正确题意:对任意一点(属于 A 层): 它若想到该层中其它点有两种方法: 通过 M extra edges,直接达到; 先去到某相邻层 B,然后回到本...原创 2019-05-27 14:02:49 · 168 阅读 · 0 评论 -
【B - Frogger】
写在前面的话:以后定义走过的一整条路径为路;每两点间的直连路为径,不再重复说明。 思路: 正权,无向图,单源点。 唯一的不同:路的总长是途径所有小径的长度的最大值,而非加和。 明白了这一点,本题就没有难度了。dijkstra。 补充: double类型一定不要用memset,置什么都不能用。被坑的很惨。 可以最后在对距离开方,应该会优化一些,但是本来就是0ms,就不必改了。 代码: 0...原创 2019-05-20 14:11:42 · 216 阅读 · 0 评论 -
【I - Arbitrage】
写在前面的话: 本题先后写了: 邻接矩阵:Bell、SPFA、SPFA + SLF; 邻接表:SPFA、SPFA+SLF 思路: 正权,单向,找正环(最长路)。原创 2019-05-24 13:41:50 · 182 阅读 · 0 评论 -
【J - Invitation Cards】
思路: 正权最短路,全图一去一回。 稀疏图要用邻接表,邻接表的反向建图方法:用三个数组(u[maxn]、v[maxn]、w[maxn])记录每一条路,然后重新录入。邻接矩阵的反向建图方法:矩阵转置(详见:Previous_BLO)。 ...原创 2019-05-24 17:18:03 · 162 阅读 · 0 评论 -
【C - Heavy Transportation】
思路: 正权无向图,求最长路,路的长度由途经径的最小长度定义 dijkstra。 为什么这么慢? 代码: 1719ms 4704kB //1719ms 4704kB #include <iostream> #include <cstring> #include <algorithm> #include <queue> #define ...原创 2019-05-21 18:51:53 · 138 阅读 · 0 评论 -
【K - Candies】
思路: 此题真的恐怖。心态得到了升华。 差分约束类(详见:),正权单向最短路Dijkstra。 我心目中的正解是两遍DIJKSTRA的,但是WA了。 用 cin 关同步一直血T,scanf 就超快。 没有必要用 pair,结构体比它快。 全部松弛后再取值,中间取值由于判断次数过多,反而运行时间更长。 代码: 心目中的正解:WA #include <iostream> #incl...原创 2019-05-25 15:04:13 · 203 阅读 · 0 评论 -
【转载】《图论总结》
细语呢喃的BLOG。转载 2019-05-25 15:26:17 · 231 阅读 · 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 · 189 阅读 · 0 评论 -
【O - Extended Traffic】
思路: POJ 仍然没有修好… 单源点,有向图,含负权,最短路。 特殊之处在于,需要判断某个点是否在负环内。 SPFA,邻接表,标记负环(DFS)。 注意,标记负环的流程: 找到一个负环内的点 标记它,对它通往的所有点继续搜索并标记。 (通往最先找到的点的那个点不能标记)。 代码: 44ms 2332kB #include <iostream> #include &l...原创 2019-05-26 20:13:10 · 202 阅读 · 0 评论 -
简单最短路
分析FLOYD、Dijkstra、SPFA算法。 判断负环。 判断图的连通性。 传递闭包。原创 2019-06-29 20:26:23 · 154 阅读 · 0 评论