最短路
文章平均质量分 76
交错的0与1
这个作者很懒,什么都没留下…
展开
-
lightOJ 1002:Country Roads
大意是给定若干个城市,若干条道路,其中有一个城市是“我”的家,求从各个城市到达家的所有道路中的最短道路中的花费最大的一段路。用dijkstra算法做,只要把原来的判断条件改一改就行了。至于航神说的方法,判断条件dis[j]>当前边,我觉得是不能过的吧。不过航神嘛,总有办法的。最后的赋值语句参考了松神的代码,学到了好多。这道题一开始是用spfa做的,当时过样例的时候有点问题,后来就改为d原创 2014-03-10 01:22:37 · 671 阅读 · 0 评论 -
poj 1062:酋长的聘礼
中文题。WA了不少次,其实spfa简单可以过,关键是错在建图上了。正向建图,设每个礼物为t,每个礼物的自身价值别放在(t,t)上,放在(t,0)上,把0当作一个结束点去算。然后枚举每一个可行的等级区间,把0的等级包括在枚举的区间内,然后spfa,取每一次枚举后dis[0]的最小值,即是答案。代码:#include #include #include #includ原创 2014-03-23 22:46:42 · 506 阅读 · 0 评论 -
poj 2253:Frogger
大意是一只青蛙要从一点到达另一点,要求中间跳的过程中每一次的最大跳跃距离最小。最短路spfa稍微改一下就行了。看网上大都是当连通图用floyd做的,没试过,不过感觉上是可以过得。代码:#include #include #include #include #include using namespace std;typedef struct node{原创 2014-03-22 01:22:20 · 411 阅读 · 0 评论 -
poj 1502:MPI Maelstrom
大意是有一条消息要从第一个处理器发送到其余各个处理器,求最长所需的时间。比较基础的最短路问题,spfa一次过。不过这道题目数据给出的方式比较奇特,它给出的是一个下三角矩阵,且没有给出主对角线上的数据。由题意知把对角线上的数据记为0,然后矩阵关于主对角线对称一下。数据中有字符x,表示无法连通。这种情况下用scanf("%s",ch)+atoi(ch)的方式可以解决。代码:原创 2014-03-21 22:04:32 · 533 阅读 · 0 评论 -
hdu 3665:Seaside
XiaoY住在0城,要到在海边的城市去,求到海边城市的最短路径。最短路。小数据量floyd直接过。代码:#include #include #include using namespace std;const int inf=0x3f3f3f3f;int n;bool sea[15];int map[15][15];void init(){原创 2014-03-28 23:52:01 · 405 阅读 · 0 评论 -
poj 1847:Tram
一个铁路网络,每个站点有一个开关,每个站点指向>=0个站点,开关指向的那条路为通,司机若想走其他路线需要转换开关。现司机想要从A点走到B点,求最少的开关转换次数。 本来很简单的一道题,结果小错误一大堆,WA了不少次终于AC了。Floyd直接过。 #include #include #include using namespace std;const int inf = 1原创 2014-03-08 15:54:34 · 677 阅读 · 0 评论 -
hdu 2112:HDU Today
给定一波站点,求其中两个站点的最短路径。 Map映射,floyd求最短路。注意mapss这句话的存在使得要添加string的头文件。 #include #include #include #include #include using namespace std;const int inf = 1<<20 ;int way[155][155] ;char s[40原创 2014-03-08 15:46:33 · 458 阅读 · 0 评论 -
hdu 2923:Einbahnstrasse
一个城市,有单向路和双向路,某些地点车辆发生故障,报告进行维修。按照报告顺序用拖车把车一辆一辆从事故地点运回修理站,问拖车总共行驶了多少路程。 题目是简单的,flody算法直接暴力。题目中要求按顺序,其实没关系的。不过理解到是一辆一辆运倒是花了不少时间。题目输出有特殊要求,要注意,同时还要注意有重边。#include #include #include #include原创 2014-03-08 15:53:37 · 425 阅读 · 0 评论 -
poj 2312:Battle City
坦克大战的最短路问题。E代表空地,B代表砖墙,一发炮弹可以解决,S代表铁墙,无法炸毁,R代表河流,无法通过,Y代表当前位置,T代表目标位置。每回合可以走一步,或者来一发,求最终到达目标位置的最少回合数。无法到达输出-1。 最短路嘛,spfa直接解决。bfs+优先队列也是可以做的,不过优先队列怎么用啊。。。各种头文件求指导。。。#include #include #inclu原创 2014-03-08 15:57:02 · 549 阅读 · 0 评论 -
hdu 3790:最短路径问题
n个点,m条无向边,每条边都有长度d和花费p,起点s终点t,求起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。 Spfa。注意有重边,且当两边相等时取花费少的那条。#include #include #include #include using namespace std;const int inf = 1<<20 ;const int原创 2014-03-08 15:44:41 · 434 阅读 · 0 评论 -
hdu 1548:A strange lift
一部电梯,能上能下。在第i层有一个k,电梯在i层只能上到第i + k或下到第i – k层,且不会超过第N层或低于第1层。问从A层到B层最少上升或下降几次。若无法到达则输出-1。 Spfa简单搞定。不过这题既视感好强。。。#include #include #include #include using namespace std;const int inf = 1原创 2014-03-07 01:42:13 · 394 阅读 · 0 评论 -
hdu 3339:In Action
T组数据。有足够坦克在0点,现有P个据点,Q条双向路,每条路有长度,坦克开单位长度的路需要油1升,每个据点提供一定电力。现需要占领一半以上的电力,坦克停留在一个据点即占领该据点并获得相应的电力。问最少需要多少油。 Spfa求0到各个据点的最短路,之后以长度为背包容量,以电力为物品价值,做01背包。注意有重边,这坑了几次。#include #include #include原创 2014-03-07 01:40:15 · 424 阅读 · 0 评论 -
hdu 1535:Invitation Cards
N组数据。给定P个站点,编号1 ~ P,Q条单向路线,每条花费一定金额,现要求从1出发,每个站点都有人,并且最后返回1,求最小金额。 数据很大,邻接矩阵存不下,要用到静态邻接表。静态邻接表存图,spfa正向扫一遍,重组图,让回来时的情况转为从1到各个点的最小金额,同样spfa扫一次。每次spfa后都把各个点的花费加起来,最后的就是答案。(debug了好长时间,( ╯□╰ ))#原创 2014-03-07 01:38:35 · 507 阅读 · 0 评论 -
hdu 1317:XYZZY
就是说给n个(n不超过100)房间,每个房间有一个能量数值(-100 ~ +100)以及若干扇门,每扇门通往另一个房间。玩家初始拥有100点能量,房间编号1 ~ n,玩家每到达一间房子就加上房间对应的能量数值。问玩家能否在能量用完之前从1到达n。 做法是先用floyd判断连通性,再用bellman-ford算法求路径。因为可能存在负权环路,所以spfa应该是没法做的。不过看到有人用spfa原创 2014-03-07 01:36:40 · 702 阅读 · 0 评论 -
hdu 2066:一个人的旅行
草儿决定要在最短的时间去一个自己想去的地方,因为草儿的家在一个小镇上,没有火车经过,所以她只能去邻近的城市坐火车。多组输入数据,每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个,草儿想去的地方有D个;接着有T行,每行有三个整数a,b,time,表示a,b城市之间的车程是time小时;(1=接着的第T+1行有S个数,表示和草儿家相连的城市;接着的第T+2行有D个原创 2014-03-07 01:34:46 · 469 阅读 · 0 评论 -
hdu 1874:畅通工程续
求最短路版的畅通工程。(这个省终于畅通了,可喜可贺,可喜可贺) 这次直接floyed算法。要注意S == T需要特判。#include #include #include using namespace std;const int inf = 1 << 25 ;int n , m ;int dis[205][205] = {0} ;void init() {原创 2014-03-07 01:32:35 · 441 阅读 · 0 评论 -
hdu 2544:最短路
给定n个点m条边,求从1到n的最短路径。 一开始用dijkstra算法,莫名其妙的WA,然后改成spfa做,还是WA,最后改成floyed算法,一次就过。这无语的。Spfa的代码保留着,若有大神看到,求指点。 #include #include #include #include using namespace std ;const int inf = 1 << 20原创 2014-03-07 01:30:28 · 423 阅读 · 0 评论 -
poj 1252:Euro Efficiency
给予6种硬币值,求1~100块钱平均可以用多少个硬币得到与最多的需要多少硬币得到。可以加可以减。 网上看说是完全背包问题,不过做下来也没感觉是完全背包,反正按思路来看感觉不是。方法是先加上去,然后减下来。具体看代码。#include#include#includeint a[10005] , c[10] ;int main() { //freopen("in.txt原创 2014-03-07 01:18:03 · 588 阅读 · 0 评论 -
hdu 1839:Delay Constrained Maximum Capacity Path
1点是珍贵矿场,N点是矿物加工厂,xian'zai原创 2014-04-06 00:50:37 · 414 阅读 · 0 评论