最短路
Mavis code
这个作者很懒,什么都没留下…
展开
-
Heavy Transportation - dijkstra
思路比较简单,每次选取最大的边,然后取路径上边的最小值,具体过程看代码注释。AC code:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define INF 1e6 + 10//之前设置为1e5,而边的最大值是1e6,所以不能保证说先便利的...原创 2018-08-24 10:41:10 · 479 阅读 · 0 评论 -
Six Degrees of Cowvin Bacon-POJ2139-最短路(优先队列)
题意:牛在同一部影片里,则距离为1,通过1个中间牛传递则是2,然后就想节点之间的距离一样传递。此外该图是连通图。然后就是对每头牛都用Dijikstra跑一遍。所以要用优先队列优化,否则会TLE。水题AC CODE:#include<iostream>#include<cstdio>#include<vector>#include<bitset...原创 2018-10-07 16:22:10 · 149 阅读 · 0 评论 -
Silver Cow Party-Dijikstra(队列优化+路径反转)-逆向思维好题
题意:给你一张有向图,要你求其他点到目标点x并且从目标点返回出发点的距离最小值的最大值。思路:我们学的是单源最短路,所以算其他点到目标点的距离不太现实,我们不妨转换视角,来个逆向思维,从其他点到目标点相当于把有向图反转后,从目标点到其他点。这样就可以解决去的问题,回的问题就是常规思路。所以先算回的最短路,然后路径反转,算去的最短路,然后两者相加就是往返最小值。最后比较即可。这里我写了两个版...原创 2018-10-07 11:31:11 · 192 阅读 · 0 评论 -
Prime Path-POJ3126-1欧拉筛选法+BFS-好题
题意:给你两个四位数的质数m,n(m&amp;lt;=n),每次变化只能改变当前数的一个数字,并且过程中的数字全是四位数的质数,求最小的步数。思路:先欧拉筛选法求出素数,然后从m开始BFS,每次只改变一个数位,如何只改变一个数位(这个很关键),这里用一个dir数组,dir[4] = {1,10,100,1000},具体看代码注释理解。AC code:#include&amp;lt;iostream&amp;gt...原创 2018-10-03 11:42:19 · 176 阅读 · 0 评论 -
次短路-DJ-好题
题意: 给你一个图,求次短路(路径可以重复)。 思路: DJ同时进行最短路和次短路的更新。 具体看代码注释。 推荐一个详细的解释:传送门。AC code:#include&amp;lt;iostream&amp;gt;#include&amp;lt;cstdio&amp;gt; #include&amp;lt;algorithm&amp;gt;#include&amp;l原创 2018-09-05 22:23:23 · 131 阅读 · 0 评论 -
Valid BFS -Manthan, Codefest 18 (rated, Div. 1 + Div. 2)-D题
题意: 给定一个图和一个序列,判断序列是否是该图BFS其中的一个结果(因为BFS选择邻接点的方式有很多种)。 思路: 好吧,比赛的时候没想出来。既然方式是多样的,那么我们就用序列所给的方式来BFS。这个可以通过顺序来实现,在所给序列先出现的就先放入队列,这样就可以按照所给序列方式遍历。我们按照节点在序列出现的先后顺序给每个节点编号,然后给每个点的邻接点按照编号从小到大排序。然后BFS跑一遍,...原创 2018-09-03 15:16:29 · 214 阅读 · 0 评论 -
Cow Contest - Floyd(好题)-POJ3660
题意: 有n头牛,强的牛的编号在前,弱的牛的编号在后,问有多少头牛的排名可以根据输入的数据确定? 思路: 本题思维转化比较巧妙,所以算是一道好题。输入a b,则建立一条从b指向a的有向边,本题数据量比较少,用Floyd算法判断两头牛之间的最短距离,最短距离不等于INF的表示这两个点建立了关系。如果一头牛与另外n-1头牛都建立了关系,则它的排名就已经确定了。AC code:#includ...原创 2018-08-24 18:40:46 · 161 阅读 · 0 评论 -
HDU1874-畅通工程续 -最短路-水题
思路: 模板题,但是要注意要要取重复的边的最小值。AC code:#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#define INF 0x3f3f3f3f//刚才又是这里设置太小了 using namespace std;const i...原创 2018-08-24 15:28:23 · 148 阅读 · 0 评论 -
Silver Cow Party -(两次Dijikstra)- POJ 3268
思路: 第一次从终点X使用迪杰斯特拉,求出从终点X返回 所有点的 最短路。然后求各个点到X的最短路时,将路径反转,转化为从X到其他的点的最短路。两次使用迪杰斯特拉,与次小生成树那道题有异曲同工之妙。AC code:#include<iostream>#include<cstdio>#include<cstring>#include<alg...原创 2018-08-24 15:24:48 · 116 阅读 · 0 评论 -
Ice Cave-CodeForces 540C -BFS
题意: X代表碎的冰块,.代表完整的冰块,经过X直接掉下去,经过“.”完整冰块变成X。问从起点能否走到终点掉下去。直接BFS,如果走到了X并且他就是终点,那么返回true,如果遍历完了都没有成功则返回false.如果走到”.”,不管他是终点还是其他点,都变成X. 注意本题使用DFS会TLE,我的推测是:BFS是就近走,就像一个不断扩大的圆,而DFS是一条直线,横冲直撞,走了很多弯路。比如,起点...原创 2018-08-28 16:31:35 · 190 阅读 · 0 评论 -
利用Dijikstra最短路特定写法求次短路,DP
第一题:2019暑假牛客第4场J-free:AC代码:#include<bits/stdc++.h>#define per(i,a,b) for(int i = (a);i <= (b);++i)#define rep(i,a,b) for(int i = (a);i >= (b);--i)using namespace std;#define INF 1e...原创 2019-08-04 16:48:10 · 177 阅读 · 0 评论