最短路径
文章平均质量分 75
AcDora
这个作者很懒,什么都没留下…
展开
-
POJ 1734 Sightseeing trip ( 图论二点)
【最短路径:这是我在这次学习图论的这个部分的第二个点,第一个点是判断是否有负权回路,不过还没来得及把分析和总结再温习一遍,那么今天就先把这个刚想通的题先写出来】 题目:求一个图中的最小环,并求路径。 分析:我在网上了看了好多人的分析,都是比较简洁的,大家也都一语道破这道题肯定是用floyd算法来解决。所以在此,我重点地谈谈遇到这道题的分析过程。 首先,这个问题比较关键的字眼,应该就是“最小环原创 2012-10-15 22:51:28 · 735 阅读 · 0 评论 -
HEU Minimum time(Dijsktra)
这道题坑在三个地方: 第一,是忽略dij的最外层循环的次数应该是出现的节点的个数,而不是26次; 第二,是忽略了除数为0的情况; 第三,是输入的问题,以后输入单独的字符,都用字符串来处理 代码: #include #include #include #include using namespace std; const int N = 30; const int INF = 0原创 2013-04-25 22:38:10 · 801 阅读 · 0 评论 -
341 Non-Stop Travel (Dijsktra)
这是一道很典型的单源点最短路径问题,用Dij来解,记录路径,通过dfs来输出路径 代码如下: #include #include const int N = 20; const int INF = 100000000; int n, s, t, ans, icase; int g[N][N], d[N], p[N]; void dij() { int mi, v; f原创 2013-03-08 20:11:16 · 986 阅读 · 0 评论 -
UVa 929 Number Maze( Dijsktra + 优先队列)
这道题是Dij的变体,由于最大的数据一共是10e6的规模,矩阵一定不过 然后看一下变数,假设每个点发出四条边(上,下, 左,右,这里就包括了双向的边了),那么数据规模就是4*10e6,结构体这样大规模,数组应该是承受不了的,如果用vector的话,应该是可以的,但是还是很麻烦 所以,我们就可以利用两个二维数组来代替边表,因为对于每个点,只要遍历它的上下左右即可 数据结构解决了,那么就是算法实原创 2013-03-09 16:22:46 · 3080 阅读 · 0 评论 -
uva821 Page Hopping( Floyd )
这个点的个数不是最大的编号,而是输入中真实的点的个数 比简单的floyd的题目 代码: #include #include #include using namespace std; const int N = 110; const int INF = 100000000; int g[N][N], a, b, id, sum, n[N], num; int main() {原创 2013-03-07 14:23:10 · 1010 阅读 · 0 评论 -
Uva 429 Word Transformation ( 最短路径 )
这道题一直是TLE,超时,开始以为是算法的问题,后来才知道是输入的问题,太坑了 这道题可以用BFS来解, floyd也没有问题 但是一定要注意,输入单词对的时候,结束符分两种情况,一种是 几组连续输入中间的是空行为结束,最后一组数据是以EOF结束 注:注释掉的 有一部分是floyd算,但是一下正常的是用BFS解题 代码: #include #include #include #原创 2013-03-03 14:22:35 · 1156 阅读 · 0 评论 -
UVa10986 Sending email(spfa)
有两天没有做题了,过年实在是事情很多,今天无论如何也要做一道题啦 这道题,单源点最短路径,我首先想到的时候Dijskra算法,由于数据规模大,有邻接表实现结果超时,第一次提交还time error,由于我没有注意到边是双向的,e的大小应该是m的2倍。 于是用SPFA,ac了。 由于点和边都超多,所以D算法超时,按照正常情况,D算法的时间复杂度是N*N,S算法是M*N,这道我分析了一下,原本以原创 2013-02-10 20:19:09 · 734 阅读 · 0 评论 -
UVa10099 The Tourist Guide(Floyd思想)
这道题和前两天做过的那个噪声污染的题是很类似的,求s到d的所有路径中能通过的最多人数大的路径的流量 那么也是Floyd的思想,如果1和4之间插入了3,使得1到4的流量增加,那么就是插入3 即满足条件:(1,3)> (1,4) && (3,4)>(1,4),取1,3 和3,4中较小的一个作为1,4的新值 代码如下: #include #include #include using na原创 2013-02-04 13:04:13 · 636 阅读 · 0 评论 -
UVa10048 Audiophobia (Floyd)
题目:任意两点之间有多条路径,每一条路径上的最大权值是不一样的,in other words, 从一个点到另一个点,经过的所有的边中,权值最大的就是这条路径的最大权。 求,任意两点之间,左右路径中,最大权值最小的路径的最大权 心得:因为有多组操作,操作数最大可达到10000次,如果每次次操作前都dfs的话,一定是超时的,于是我想到了floyd算法。思想是对的,但是细节的想法出现了错误,于是我就原创 2013-01-31 21:48:09 · 524 阅读 · 0 评论 -
UVa 10801 Lifting Hopping (Dijsltra)
这道题的建图,比较有讲究,开始想了很久,到底是怎么建图能体现现出换电梯需要六十秒!后来参考了别人的思路,就是只要一条边走到头,就换电梯,也就是换边就是换电梯。 建图,把每个电梯能到达的楼层,两两之间有一条边,如果有其他电梯的这条边更短,选择更短的。 每次换边的时候,要注意加60,因为需要60秒;最后结构要-60,因为第一次进电梯不需要60;如果去第0层,就是另外处理,是0,否则正常输出的是-6原创 2013-04-18 13:32:16 · 1041 阅读 · 0 评论