本文共 1589 字,大约阅读时间需要 5 分钟。
为了解决这个问题,我们需要重新排列指令以确保它们之间的间隔不小于安全距离,从而避免潜在的错误。我们将使用拓扑排序来确定指令的执行顺序,并计算每个指令的最早开始时间(EET),以确保所有依赖关系和安全距离都得到满足。
import sysfrom collections import dequedef main(): input = sys.stdin.read().split() ptr = 0 N = int(input[ptr]) ptr += 1 M = int(input[ptr]) ptr += 1 G = [[] for _ in range(N)] indegree = [0] * N EET = [0] * N for _ in range(M): X = int(input[ptr]) ptr += 1 Y = int(input[ptr]) ptr += 1 Z = int(input[ptr]) ptr += 1 G[X].append((Y, Z)) indegree[Y] += 1 queue = deque() for i in range(N): if indegree[i] == 0: queue.append(i) while queue: u = queue.popleft() for (v, z) in G[u]: if EET[u] + z > EET[v]: if EET[v] == 0: EET[v] = EET[u] + z indegree[v] -= 1 if indegree[v] == 0: queue.append(v) else: EET[v] = max(EET[v], EET[u] + z) if EET[v] > EET[u] + z: pass print(max(EET))if __name__ == "__main__": main()
通过这种方法,我们能够高效地重新排列指令,确保所有依赖关系和安全距离都得到满足,从而在最短的时间内完成所有指令的执行。
转载地址:http://qkmtz.baihongyu.com/