有一个比较复杂的软件系统需要部署到客户提供的服务器上。该软件系统的安装过程非常繁琐,为了降低操作成本,需要开发一个工具实现自动化部署。
软件的安装过程可以分成若干个小步骤,某些步骤间存在依赖关系,被依赖的步骤必须先执行完,才能执行后续的安装步骤。满足依赖条件的多个步骤可以并行执行。
请你开发一个调度程序,以最短的时间完成软件的部署。
题目要求开发一个自动化部署调度程序,软件安装分为多个步骤,某些步骤有依赖关系,必须先完成前置步骤才能执行后续步骤,且无依赖的步骤可以并行执行。输入包括步骤总数、每个步骤所需的时间以及每个步骤的依赖关系,输出为完成所有步骤的最短时间。例如,输入步骤总数为4,每个步骤的执行时间为6, 2, 1, 2,依赖关系为某些步骤没有依赖,某些步骤有依赖,输出最短完成时间为9。
该问题本质是有向无环图(DAG)中的拓扑排序问题,要求根据步骤依赖关系调度任务,计算并行执行的最短完成时间。
通过拓扑排序,使用队列依次处理无依赖的节点,更新后续步骤的最早开始时间,累积计算每个步骤完成的最短总时间,最后输出最大值。