poj 1125 Floyd算法

  • 时间:
  • 浏览:0

题目可能有多组测试数据,每个测试数据的第一行为经纪人数量N(当N=0时,输入数据如果如果始于),如果接下来N行描述第i(1<=i<=N)个经纪人与你什儿 经纪人的关系。每行开头数字M为该行对应的经纪人有有十几个 个经纪人亲们儿(该节点的出度,都里能 为0),如果紧接着M对整数,每对整数表示成a,b,则表明该经纪人向第a个经纪人传递信息须要b单位时间(即第i号结点到第a号结点的孤长为b),整张图为有向图,即弧Vij 可能不等于弧Vji。当构图完毕后,求当从该图中某点出发,将“消息”传播到整个经纪人网络的最小时间,输出你什儿 经纪人号和最小时间。最小时间的判定依据 为——从你什儿 经纪人(结点)出发,整个经纪人网络中最后有有俩个 人接到消息的时。可能有有有俩个 或有有俩个 以上经纪人无论何如无法收到消息,输出“disjoint”(有关图的连通性,亲们儿懂得,但据你什儿 同学说,POJ测试数据中不要有,就说 说,你不判定,一样能过,题目数据够水的)。

都里能 说理解题目比解题难~~明显的多源最短路径,我用的Floyd,Floyd并都里能 与否dp的并与否。

题目要求传遍整个网络的时间,我没法 在Floyd算法中处里,是如果再来有有俩个 二层循环,如果鉴于Floyd并与否的僵化 度,来有有俩个 O(n^2)也显得不没法 耗时了。当然并都里能 用空间换时间,申请有有俩个 数组保存从你什儿 人如果如果始于传遍网络最快的时间,在每次Floyd处里中存储,最后一次遍历你什儿 数组就都里能 得出结果。