
多源最短路径
ITCharge
高效率编程,慢节奏生活。
展开
-
POJ1734 Sightseeing trip【Floyd】【最小环】
题目大意:有个旅游公司要开发一条新的旅游路线,要求这条路尽可能短,但是又不能只包含 两个城市,并且旅游途中不能回到之前去过的城市,只能去往下一个没去过的城市,旅游结束 的时候要回到最开始的城市,要求求出整个旅游路线经过的城市。 思路:给N个点,M条边建图。路程最短,且要形成环,其实就是求最小环问题。可以用Floyd 来做。用Dist[i][j]存储从i到j的最短路径,但是 i != j,因为最少要有3个点(加上k至少3个点)。 用pre[i][j]来表示从点i到点j的路径中j点前边的点。判定最小环时,点i到原创 2015-01-28 20:54:00 · 1150 阅读 · 0 评论 -
POJ1125 Stockbroker Grapevine【Floyd】
题目大意:有N个股票经济人,他们之间可以传递信息,但是他们只相信他们认为可靠的人的信息。 现在由某个人开始传信息,怎么能在最短的时间内让所有人都接收到消息。这个时间取决于最后一 个人收到信息的时间。如果没有一个人能使所有人都接收到信息,则输出"disjoint",否则,就输出 最短的时间和这个人的编号。 思路:可以看做是N个点,M条单向边。建立一个图,然后用Floyd求多源最短路径。之后,遍历所 有的结点,找到符合要求的那个人编号。不存在就输出"disjoint"。原创 2015-01-25 21:03:33 · 952 阅读 · 0 评论 -
POJ3615 Cow Hurdles【Floyd】
题目大意:John想为农场的奶牛举办跳高比赛。奶牛们现在都累了,它们想尽可能的用最少的能量 完成跳高,因为跳过低点的障碍不是很困难,但是高点的障碍就非常困难,所以奶牛只关心它要越 过的障碍的最高高度。 现在给你N个点,编号为1~N,在N个点之间有M个障碍,给你M个障碍链接的点编号和障碍高度, 判断T组从点A跳到点B,尽可能使障碍高度低的路径上最高障碍物高度是多少。 思路:把障碍的高度看做是边,那么题目意思就是给你N个点,M个单向边。问点A到点B能达到的 最长边尽可能短的路径上最长边为多少。类似于求多源最短路原创 2015-01-25 21:43:07 · 1152 阅读 · 0 评论 -
POJ3216 Repairing Company【二分图最小路径覆盖】【Floyd】
题目大意: 有Q个地点,告诉你Q个地点之间的相互距离(从i地点赶到j地点需要的时间)。有M项任务, 给你M项任务所在的地点block、开始时间start和任务完成需要时间time。一个工人只有在 他准备完成的下一项任务开始之前完成手上的任务,然后在下一项任务开始之前赶到下一项 任务的地点,才能完成这两项任务。问:最少需要多少个工人来完成这M项任务。 思路: 先用Floyd算出Q个地点之间相互最短距离。然后建立一个二分图,每边都是M项任务,如果 能在任务j完成之前将i任务完成并能赶到任务j的地点,就建立一条原创 2015-04-07 17:57:16 · 954 阅读 · 0 评论 -
多源最短路径Floyd、Floyd求最小环【模板】
Floyd算法:用来找出每对点之间的最短距离。图可以是无向图,也可以是有向图,边权可为正,也可以为负,唯一要求是不能有负环。 1.初始化:将Map[][]中的数据复制到Dist[][]中作为每对顶点之间的最短路径的初值,Pre[i][j] = i 表示 i 到 j 路径中 j 的前一节点。 2. k 从 1 到 N 循环 N 次,每次循环中,枚举图中不同的两点 i,j,如果Dist[i][j]原创 2015-05-04 21:58:04 · 1371 阅读 · 0 评论