#P1465. 2024.10.9-秋招-第2题-软件安装工具

2024.10.9-秋招-第2题-软件安装工具

题目内容

有一个比较复杂的软件系统需要部署到客户提供的服务器上。该软件系统的安装过程非常繁琐,为了降低操作成本,需要开发一个工具实现自动化部署。

软件的安装过程可以分成若干个小步骤,某些步骤间存在依赖关系,被依赖的步骤必须先执行完,才能执行后续的安装步骤。满足依赖条件的多个步骤可以并行执行。

请你开发一个调度程序,以最短的时间完成软件的部署。

输入描述

第一行:总步骤数N(0<N<=10000)N(0<N<=10000)

第二行:NN个以空格分隔的整数,代表每个步骤所需的时间。该行所有整数之和不大于int32int32

第三行开始的NN行:表示每个步骤所依赖的其它步骤的编号(编号从11开始,行号减22表示步骤的编号),如果依赖多个步骤,用空格分隔。1-1表示无依赖

测试用例确保各个安装步骤不会出现循环依赖。

输出描述

11个数字,代表最短执行时间。

样例1

输入

4
6 2 1 2
-1
-1
1
3

输出

9

说明

一共44个步骤。

每个步骤所需的时间分别为6 2 1 26\ 2\ 1\ 2

步骤11和步骤22无依赖,可并发执行;步骤33依赖步骤11;步骤44依赖步骤

总的最小执行时间为6+1+2=96+1+2=9

hw-2(1)

样例2

输入

4
1 2 3 4
2 3
3
-1
1

输出

10

说明

步骤11依赖步骤2233,步骤22依赖步骤33,步骤33无依赖,步骤44依赖步骤11

执行顺序为 3>2>1>43 --> 2 --> 1--> 4,最小执行时间为3+2+1+4=103+2+1+4=10

hw-2(2)