![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
最短路
文章平均质量分 76
时光爱客
明天是遥远的,我们只能从当下的努力中嗅出它的味道。
展开
-
poj 3660 Cow Contest floyd
这道题目需要知道每两个点之间的关系,以此来判断这两个点是否有上下等级的关系,很明显,可以用到floyd算法,运用传递背包的性质,就可以算出来,每两个点的关系,只要一个点与其他点的关系都存在,那么这个点的等级就可以确定了。代码:#include#include#include#include#include#include#include#include#includ原创 2015-08-22 22:23:18 · 495 阅读 · 0 评论 -
hdu 2544 最短路 spfa
又做了一遍这道题目,这次是用spfa方法做的,这个方法是用来处理含有负权问题的,用队列来维护,复杂度也降低了不少,有点不好理解,。代码:#include#include#include#include#include#include#include#include#include#include#define MAX 0x7fffffffusing namespac原创 2015-08-23 14:48:24 · 683 阅读 · 0 评论 -
hdu 3790 最短路径问题 spfa
还是用的spfa算法,wa了好多次,又是因为输入的时候可能有重复的边,甚至还可能出现边的权值相同,但是花费不同。。。wa了好几次,还有忘了删多余的代码。。。血淋淋的教训啊。。。思路:就是多加了一个花费,没多大的区别,还是用的spfa方法,就是在距离相等的时候更新一下花费就可以了,距离不相等的时候都更新。代码:#include#include#include#include原创 2015-08-24 13:06:55 · 639 阅读 · 0 评论 -
hdu 2544 最短路(dijkstra)
刚学dijkstra,最短路径简单题,我却wa了好多次。。。真是傻啊,还一直找不出错误在哪,这么简单的问题。原来是我初始化的时候把点与点的距离都初始化为0了。应该初始化为无穷大才可以。。因为输入不会出现所有的点,意思就是有的点与点之间可能没有路径,所以要初始化为无穷大。最重要的一点是不能用 limits头文件里面的INT_MAX,否则会一直wa的。。。我也不知道为什么。。。代码:原创 2015-08-16 15:08:12 · 526 阅读 · 0 评论 -
hdu 2066 一个人的旅行 dijkstra
还是用的优先队列和vector,这道题不同的是可能或有多个起点,多个终点,加一个循环就可以了。c++交得加#include 头文件,g++则不用代码:#include#include#include#include#include#include#include#include #include#include#include#include #define MAX原创 2015-08-17 09:51:07 · 643 阅读 · 0 评论 -
hdu 1874 畅通工程续 dijsktra dijkstra+邻接表 优先队列 bellman-ford bellman-ford队列优化(基础题目,一步步优化)
又是一道最短路基础题目,注意两点就可以了:1.输入的时候可能会两点之间有多条路,选最短的存起来。2.判断有没有路径存在,可以判断一下终点到起点的距离是否小于原来初始化的最大值,如果是就输出结果,否则输出-1代码:#include#include#include#include#include#include#include#include#include#defi原创 2015-08-16 21:04:08 · 900 阅读 · 0 评论 -
poj 2253 Frogger (floyd)
计算每条路径上最大的路,使它最小,floyd算法用数组保存该路径上的最大值就可以啦,这个oj上g++提交的时候double型要用f,被坑了两次。。。其实double输入的时候用lf,输出的时候f和lf都可以的。代码:#include#include#include#include#include#include#include#include#include#define原创 2015-08-22 11:56:33 · 546 阅读 · 0 评论 -
poj 1847 Tram floyd
又是floyd,又是floyd,做最短路总是找到floyd,现在对floyd越来越了解了,挺简单的,floyd就是会让你知道每两个点之间的关系,恩,这样的功能确实很强大,这道题目是让求两个点之间改变方向次数最少的情况下从一个点到另一个点,很明显,可以用floyd,求出每两个点之间能到达时方向改变的最少次数。代码:#include#include#include#include原创 2015-08-22 23:26:56 · 543 阅读 · 0 评论 -
PAT Emergency dijsktra
首先wa了好多次,只有第一个答案是正确的,后来才知道原来是第一个输出是最短路径的个数,一直以为是最短路径。。。。无语了,代码中d[i]代表从c1到节点i的最短路径个数,sum[i]代表最短路径中能集结的最多救援队数,在每次更新节点路径长度的时候要考虑对他们该如何操作。#include #include #include #define Max 0x7fffffff - 10000原创 2016-09-03 10:43:23 · 351 阅读 · 0 评论