
最短路
Noooooorth
能够放弃的东西从来都不叫梦想
展开
-
HDU 2112 HDU Today(floyd-warshall+map)
基本上是floyd-warshall的模板题,直接调用函数,注意map的使用即可,还要特别判断n=0的情况。原创 2015-07-25 02:00:36 · 1763 阅读 · 0 评论 -
POJ 1062 昂贵的聘礼(dijkstra)
一个人为了娶酋长的13岁的女儿(雾),需要支付给酋长一定的钱,但是酋长提出如果他能买来另外某个人的东西,酋长会给予他一定的优惠(如起初酋长要求10000金币,但是酋长说:“如果你能买来2号的东西,我就只要求你付8000金币”,而2号的东西只需要1000金币,所以可以只花费9000金币)。但是题目限制了整个交易过程中的等级,假如你与一个等级过高的人交易过,那么你之后就不能与某些等级过低的人交易。注意:等级差距限制是对于整个交易过程而言的,不是对于每次交易。如:等级差距限制是2,那么如果之前与等级为4的人交易过原创 2015-08-16 14:04:38 · 1796 阅读 · 0 评论 -
POJ 3268 Silver Cow Party(dijkstra+矩阵转置)
n头牛要到达某一个点X,然后再返回到原来的位置。同时要求对于每头牛路径必须是最短的,而且去的路和回来的路不一样。求这些牛所花费的最长时间。原创 2015-08-16 14:10:50 · 1949 阅读 · 0 评论 -
HDU 3191 How Many Paths Are There(SPFA)
最短路我们可以求,但是次短路怎么求呢?我们可以把记录最短路长度的mincost数组和记录最短路个数的dp数组变成二维的,1表示最短路,2表示次短路。若遇到比最短路还短的路,则把最短路的信息赋值给次短路,再改变最短路的信息。另外我们更新mincost数组的时候会遇到以下四种情况:1)从当前点出发到达i的某条路的长度比到达i点的最短路短:把最短路信息赋值给次短路,把这条路的信息赋值给最短路;2)从当前点出发到达i的某条路的长度与到达i点的最短路的长度一致:把到达当前点且长度最短的种类数加到到达i点的最短路原创 2015-08-06 16:46:02 · 1718 阅读 · 0 评论 -
HDU 4360 As long as Binbin loves Sangsang(SPFA)
SPFA,多一个dp数组记录,特判n=1的情况,路径长度可能超int。原创 2015-08-06 16:40:21 · 1828 阅读 · 0 评论 -
SCU 4526 最短路(dijkstra+枚举+BFS)
题目链接:点击打开链接题目大意:给定n个点,m条有向边,求互不重叠的从起点到终点的最短路条数,点可以重复使用。解题思路:首先我们要找出所有的最短路使用的边。可以想到:对于一条边,如果从起点到它的一端的最短距离加上终点到它另一端的最短距离再加上边的长度等于起点到终点的最短距离,那么这条边必定是某一条最短路上的一条边。所以,使用两次dij求对于起点和终点的单源最短路,然后枚举边,就可以判断原创 2016-07-26 01:13:19 · 548 阅读 · 0 评论 -
HDU 2448 Mining Station on the Sea(floyd+KM)
题目链接:点击打开链接题目大意:在m个采矿站中有n只船,这n只船要回到n个港口,每个港口只能停留有一只船。给出距离,求这n只船全部回到港口要走的总路程的最小值。先用floyd求出m个采矿站到n个港口的最短路程。题目中有这么一句话:“Notice that once the ship entered the port, it will not come out!”使用floyd的时候要注意港原创 2016-07-19 00:09:33 · 406 阅读 · 0 评论 -
HDU 5723 Abandoned country(DFS+kruskal)
题目链接:点击打开链接题目大意:给出n个点和m条边,每条边的权值都不相同,求使得n个点连通最少需要的边的权值,以及随机选2个点作为起点和终点的路径长度的期望(题面说是最小权值和最小期望,但是m条边权值各不相同,所以每个权值对应一个期望,求出最小生成树的时候,期望也一定是最小的)n的规模是1e5,所以求最小生成树使用的是O(nlogn)的kruskal。问题是怎么求期望。首先,每两个点被原创 2016-07-20 02:07:02 · 482 阅读 · 0 评论 -
SCU 4529 An Easy Problem(强连通分量+缩点+最小路径覆盖+剪枝)
题目链接:点击打开链接题目大意:有向有环图,求最小路径覆盖,点可以重复使用解题思路:题目有1000个点,直接闭包传递可能会超时,所以可以先把每个强连通分量缩点,然后再使用floyd进行闭包传递,最后再求最小路径覆盖。在闭包传递的时候要进行一个剪枝,不然会被卡常数。#include #include #include #include #include #inclu原创 2016-07-26 01:20:25 · 641 阅读 · 0 评论