AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P3753. 微服务的集成测试

困难通过率 51% · 提交 349 · 通过 178
BFS拓扑排序图论动态规划

小慕正在开发一个由 n 个微服务组成的系统,每个服务的启动可能存在依赖关系(有些服务可以独立启动),同时每个服务自身启动加载也需要一定时间。 给定一个 n×n 的二维矩阵 useTime,其中 表示服务 i 自身启动加载需要 10 秒,useTime[i][j] = 1 表示服务 i 启动依赖于服务 j 先启动完成,useTime[i][k] = 0 表示服务 i 启动不依赖于服务 k。其中 0 ≤ i, j, k < n。 服务之间的依赖关系不存在循环依赖(即没有环)。现在小慕希望对任意一个服务 i 进行集成测试(服务 i 自身也需要加载),请问最少需要等待多少时间才能开始测试?

提示:带虚线的词点一下有通俗解释。

输入描述

第一行输入服务总量 n,之后的 n 行表示服务启动的依赖关系以及自身启动加载耗时 最后输入 k 表示计算需要等待多少时间后可以对服务 k 进行集成测试 其中 1 <= k <= n,1<=n<=100

输出描述

最少需要等待多少时间(s)后可以对服务 k 进行集成测试

示例

示例 1

输入

3
5 0 0
1 5 0
0 1 5
3

输出

15

说明:服务3 启动依赖服务2,服务 2 启动依赖服务 1,由于服务 1,2,3 自身加载需要消耗 5s,所以 5+5+5=15,需等待 15s 后可以对服务 3 进行集成测试

示例 2

输入

3
5 0 0
1 10 1
1 0 11
2

输出

26

说明:服务 2 启动依赖服务 1 和服务 3,服务 3 启动需要依赖服务 1,服务 1,2,3 自身加载需要消耗 5s,10s,11s,所以 5+10+11=26,需等待 26s 后可以对服务 2 进行集成测试

示例 3

输入

4
2 0 0 0
0 3 0 0
1 1 4 0
1 1 1 5
4

输出

12

说明:服务 3 启动依赖服务 1 和服务 2,服务 4 启动需要依赖服务 1,2,3,服务 1,2,3,4 自身加载需要消耗 2s,3s,4s,5s,所以 3+4+5=12s(因为服务 1 和服务 2 可以同时启动),需等待 12s 后可以对服务 4 进行集成测试

示例 4

输入

5
1 0 0 0 0
0 2 0 0 0
1 1 3 0 0
1 1 0 4 0
0 0 1 1 5
5

输出

11

说明:服务 3 启动依赖服务 1 和服务 2,服务 4 启动需要依赖服务 1,2,服务 5 启动需要依赖服务 3,4,服务 1,2,3,4,5 自身加载需要消耗 1s,2s,3s,4s,5s,所以 2+4+5=11s(因为服务 1 和服务 2 可以同时启动,服务 3 和服务 4 可以同时启动),需等待 11s 后可以对服务 5 进行集成测试

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
依赖关系图(示例:服务4依赖1,2,3) 服务1 (2s) 服务2 (3s) 服务3 (4s) 服务4 (5s) 等待时间 = 服务2(3s) + 服务3(4s) + 服务4(5s) = 12s
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「微服务的集成测试」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。