# 通讯网络中有N个网络节点,用1-N表示 # 网络通过一个有向无环图表示,其中图的边的值表示节点之间的消息传递延迟 # 现给定节点之间的延迟列表time[i]={u,v,w} # u表示原节点,v 表示目标节点,w表示表示v,v之间的消息传递延迟 # 请计算给定原节点到目标节点的最小延迟 # 如果目标节点不可达返回-1 # # 第一行输入两个整数N,M,分别表示节点个数和延迟列表的长度 # 接下来M行为 两个节点的延时列表[u,v,w] # 最后一行表示原节点和目标节点 # 3 3 # 1 2 11 # 2 3 13 # 1 3 50 # 1 3 # 输出:24 # # 5 7 # 1 2 11 # 2 3 13 # 1 3 50 # 3 4 55 # 4 5 35 # 2 4 15 # 3 5 40 # 1 5 # 输出: 61 def main(): N, M = map(int, input().split()) graph = [] for _ in range(M): ints = list(map(int, input().split())) if ints[0] < 1 or ints[0] > N: break if ints[1] < 1 or ints[1] > N: break graph.append(ints) start, end = map(int, input().split()) res = [] stack = [(start, 0)] while stack: node, count = stack.pop() for temp in graph: if temp[0] == node: if temp[1] == end: res.append(count + temp[2]) else: stack.append((temp[1], count + temp[2])) if len(res) == 0: print(-1) else: print(min(res)) if __name__ == "__main__": main()
4. 最小传递延迟-栈--OD
于 2024-03-24 16:48:34 首次发布