题目概述:
这道题的大意是说,在股市中特定的人之间都有各自的联系,且对于每一条关系,从一个人传递谣言到另一个人的时间是不同的。然后我们的目标是要散布一条谣言,判断出应该从谁开始传播,才可以让这条谣言传播完整个人际关系网络,并且算出传递到最后一个人的时间是多少。
另外说一句,这道题的数据非常弱的,估计没有多少个超过20的点的图。而且看别人的博客也没有输入非连通的情况。
算法思想:
因为这明显是一个图求最短路径的题,并且要试一下每一个点为源点的情况,所以我就决定用Floyd来算。
首先把每一个人当作图中的一个顶点,每一个关系当作一条边,这段关系的消息传递时间当作这条边的权重,初始化时候把自己到自己的距离初始为0,其他的都为INF。
然后用佛洛依德算法计算出各点距离。
然后依次枚举每一个点,看从这点到整个网络点的距离的最大值,记下这时候的起点值。
再从这些最大值中取得一个最小的,输出其起点值和这个最小值。
完毕。
代码部分:
#include <iostream> #include <list> #include <map> #include <string.h> #include <string> #include <algorithm> using namespa