HOJ 1113 Stockbroker Grapevine (Floyd最短路)
摘要:题意:谣言在n个人之间传播,谣言从一个人传给另一个人需要一定时间(是有向图)。问谣言从哪个人开始传,传遍所有人所用时间最短(这里的时间指的是,传到最后一个人时所用的时间)。输出这个人的编号,及所需要时间。分析:Dijkstra是用来求单源最短路的,而这里起点不确定。采用Floyd算法先对图进行收缩,O(n^3)的复杂度。对每个点,找到这个点做源点时,谣言传遍所有人所需要的“时间”,遍历所有点,找到最短的那个“时间”,复杂度为O(n^2)。对于floyd算法:算法描述:(1) 用数组dis[i][j]来记录i,j之间的最短距离。初始化dis[i][j],若i=j则dis[i][j]=0,若i,j
阅读全文
posted @
2012-10-01 19:36
MicZ
阅读(234)
推荐(0)
HOJ 1653 Heavy Transportation&& HOJ 1460 Heavy Cargo (Dijkstra 单源最短路)
摘要:题意:给出了城市数n,以及街道数m(街道是双向均可通行的), 对于每一条街mi,给出它的两端的城市,以及所能承载的最大货物运输量。要求输出,从城市1到城市n,最多能运输多少货物。分析:无向、带权图的单源最短路问题。 但这里路径的定义变成了:这条路上权值最小的那段路 的权值(而非所有段的权值之和)。我们的任务就是求出:每一条从1到n的路上,“路径” 的最大值。 这样,就成了求单源最长“路径”。//hoj 1653
//Dijkstra 单源最短路
//注意此题中路长的定义变成了,各段路的权值的最小值 #include <iostream>
#include <cstdio>
阅读全文
posted @
2012-10-01 11:14
MicZ
阅读(153)
推荐(0)