昨天CW给我们讲了最短路径哈~~大致理解明白了~发了两道题。做做看吧。
这道题大致含义就是,让你求最短的传播路径使之可以传播到所有的人。
这个是双向的,输入:
3
2 2 4 3 5
2 1 2 3 6
2 1 2 2 2
3是人数,下来的行数就是人的编号。第一行就是第一个人可以传播的方法。第一个2是接下来输入的对数。2 4 代表可以用4分钟传播给2号,3 5 代表可以用5分钟传播给3号。。。下面一样。
这个用邻接矩阵写比较方便哈。把时间写到一个2维数组里,不能传播到的写INT_MAX,对角都是0;
用for循环将每个人(i)作为起点,然后算传播到每个人的时间,会得到一个dis[]数组,里面存有i号人传播到每个人的时间,求这时间的最大值,保存。然后求出循环n个人后这个时间最大值里面的最小值,如果有传播不到的,输出" disjoint "。否则输出从几号开始传播 以及最短传播到所有人的时间。