最短路
文章平均质量分 82
ophunter
不会DP!
展开
-
poj2240&zoj1092 Arbitrage(Bellman-Ford)
题目请戳这里或这里 题目大意:n种货币,m种兑换汇率,求是否存在某种货币经过一些兑换之后获得更多的价值。 题目分析:建图求最长路。存在兑换关系的货币直接建一条有向边,从某个货币出发,假设该货币初始值为1,求一条最长路,乘上路径上所有的汇率,最后回到该货币,如果价值增加了,输出Yes,如果n种货币均不存在这种情况,No。 这题Floyd也可以做。 详情请见代码: #include #in原创 2013-08-26 16:10:37 · 1033 阅读 · 0 评论 -
poj3268 Silver Cow Party(SPFA)
题目请戳这里 题目大意:n个点,m条边的有向图,给定一个点x,现在要求所有点出发到x再回到各自的点的总路程的最大值。 题目分析:有向图,求来回距离和的最大值。我们可以将这段路程分成2部分:先走到x,再从x到各点。从x回到各点好办,就是一个单源最短路的问题。但是要求从各点到x的距离,可以反过来求,因为是有向图,所以建一个反图,这样从所有点到x就又变成了从x到所有点,又变成了一个单源最短路。所以本原创 2013-08-26 19:23:25 · 1068 阅读 · 0 评论 -
poj2570&zoj1967Fiber Network(floyd+状态压缩)
题目请戳这里 题目大意:n个路由器,编号1-n,26个公司,编号a-z,路由器之间有一些有向边,边权为一个字符串,字符串由小写字母组成,表示字符串对应的公司能使这条边连通。现在给若干个查询,查询能使任意2个路由器连通的公司。 题目分析:题目就是要求能使任意2个路由器连通的公司的集合。公司只有26个,求集合一般用状态压缩。因为要查询任意2个路由器,所以要知道任意2个路由器连通的公司集合。n范围2原创 2013-08-26 20:25:44 · 1019 阅读 · 0 评论 -
poj1122&zoj1053 FDNY to the Rescue!(dijkstra+输出路径)
题目请戳这里(poj)或这里(zoj) 题目大意:n个点表示n个路口,任意2个路口可能有一条路,现在给定一个着火点和若干消防局,求所有消防局到着火点最短距离并输出路径,按找距离升序输出,按样例输出。 题目分析:裸的最短路,路径的话记录前驱就ok。 不过这题还是搞的很dt,poj是单case,zoj是多case,而且消防局数量不告诉,所以要自己判断有多少个,sscanf可以解决,但是由于这题的原创 2013-08-26 14:14:41 · 1370 阅读 · 0 评论 -
poj2263&zoj1952Heavy Cargo(floyd)
题目请戳这里 题目大意:给一张无向图,边权为正整数,代表两端点之间路上能承载的最大重量,给定一个起点和一个终点,问起点到终点最大载货量。 题目分析:此题方法很多。floyd比较好想。每条路都有最大承载重量,所以经过这条路的车重量不能超过这个数,所以要求起点到终点所以路径中既能保证通过所有路,又要保证运货量最大。点的数量不超过200,所以可以直接floyd,通过枚举任意2点之间所有路径,取最大值原创 2013-08-26 22:29:50 · 922 阅读 · 0 评论 -
hdu4725The Shortest Path in Nya Graph(拆点 + 最短路dijkstra | SPFA)
题目请戳这里 题目大意:给n个点,m条无向边,边权w,为走这条路的代价。每个点属于某一层,从某层到隔壁层代价都是固定的c,求1到n最短路。 题目分析:最短路。比赛的时候硬上SPFA,结果T出翔了。还是太年轻了啊。 因为每个点可以借助层的属性,到达其他点就有了其他的路径。所以有必要把每层也抽象出额外的点。因为每层的点也是不连通的,就是说如果点i和点j在同一层,并不代表他们之间距离就是0。所以对原创 2013-09-12 12:28:49 · 1668 阅读 · 1 评论 -
hdu3696Farm Game(SPFA求最长路)
题目请戳这里 题目大意:有n种物品,每种有相应的价值和数量。现在给m组关系链,组成一张关系网,表示某物品之间相互转换的关系。求已知的物品能获得的最大价值。 题目分析:每种物品可以直接卖掉,也可以通过转换成价值更高的物品再卖以获取更高的价值。对每个物品的单价建图,求每个物品通过转化所能获得的最大单价,然后再卖掉,可以获得最大价值。设一个源点s,s到每个物品建边,边权log10(p[i]),为相应原创 2013-10-03 14:24:13 · 1528 阅读 · 0 评论 -
2012 Asia Hangzhou Regional Contest--hdu4460Friend Chains(SPFA)
题目请戳这里 题目大意:给n个人,m个关系,组成了一张关系网,求一个k使任意2个人在关系网中距离不大于k。 题目分析: 12年杭州现场赛水题之一。 就是在无向图中求出任意2点距离最小值,取最小值的最大值为k。任意2点最小值很容易想到floyd,不过此题的点数达到1000,O(n^3)亚历山大。所以可以做n个spfa。枚举起点跑n次spfa,一次spfa时间复杂度大约O(ke),所以总的时间原创 2013-10-09 22:00:03 · 1133 阅读 · 0 评论