最短路
Jaster_wisdom
程序员
展开
-
POJ 1062
这次做的是 最短路问题。 运用 Dijkastra 算法: 将点集 分为两类,一边是访问过的,一边是 未访问的,该算法的终结条件是 所有的点 都访问过。 该算法解决某一点 到 图上 其他各点最短距离的问题。 那么,首先求出这一点到各个点上距离最小的一个点,将其加入到访问过的点集里面去,然后更新初始点到各点的距离,借助的就是刚刚进入vis[] 数组里面的那个点。举例来说的话,就是本来 甲地 到原创 2016-03-10 20:04:57 · 615 阅读 · 0 评论 -
POJ 1125
题目大意:以各点为源,比较每次Dijkstra算法求出的值,求出最小值。如果图不连通,输出 Disjoint。 #include using namespace std; #define MAX 1<<29 int n; bool vis[101]; int dis[101][101]; int d[101]; //表示到各点的最短距离 int dijkstra(int start)原创 2016-03-12 15:02:13 · 688 阅读 · 0 评论 -
POJ 1797
题目咋一看,就是 最短路问题,解法是 Dijkstra 算法的变体。 题目大意是 给定n个城市,和 它们之间的 m 条街道,以及街道上的 最大载重。 可以这样理解,现在找一辆车从 城市 1 到往 城市 n,求最大的载重,前提是 不能把 街道压坏,也就是载重必须小于等于 给定的街道最大载重。 这里只需要 将 Dijkstra 算法里面的 更新边的条件 改一下,也就是 d[i] 表示1城市到 i原创 2016-03-14 16:34:52 · 587 阅读 · 1 评论 -
POJ 2253
这道题是最短路问题,题目的意思 要好好理解一下。这种题目我觉得Dijkstra算法倒不是什么难点,关键在于按题目要求如何更新边,算法里面是 找最小边还是最大边,题目大意的理解很重要。 这道题是要求,一条路上的最大边,并且这条边比其他路上的边都要小。 所以,这里是要找 最小边,然后更新边集,如果dis[j]>max(dis[k],map[k][j]),就要进行更新了。原因是,某一条上的最大边 比原创 2016-03-15 16:16:04 · 504 阅读 · 0 评论 -
九度OJ 1447
题目描述: 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗? 输入: 输入包括多组数据。每组数据第一行是两个整数N、M(N 当输入为两个0时,输入结束。 输出: 对于每组输入,输出一行,表示工作人员从原创 2016-06-01 16:42:33 · 632 阅读 · 0 评论 -
九度OJ 1008 最短路径问题
题目描述: 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。 输入: 输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;起点s,终点t。n和m为0时输入结束。 (1 输出: 输出原创 2016-06-27 21:58:13 · 1604 阅读 · 0 评论 -
蓝桥杯-最短路问题(SPFA算法)
问题描述:给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环)。请你计算从1号点到其他点的最短路(顶点从1到n编号)。问题分析:由于某些边的权值可能为负值,所以Dijkstra算法失效(为什么?因为假设存在一条总长为负的环,那么Dijkstra算法可以一直绕下去,总长在不断减小)。 因为图中最多的结点可以达到20000个,所以使用Floyd算法,时间复杂度O(n^3),明显是超...原创 2018-03-12 00:52:15 · 1055 阅读 · 1 评论