【华为校园招聘软件】 2022-04-06
编程题 (第2/3题)
【编程题目 | 200分】服务启动 [ 2022 考试题 ]
2、服务启动
■ 题目描述
有若干个连续编号的服务(编号从0开始),服务间有依赖关系,启动一个指定服务,请判断该服务是否可以成功启动,并输出依赖的前置服务编号(依赖关系是可传递的,比如服务2依赖于服务1,服务1 依赖于服务0,那么服务2依赖于服务1和服务0)。
解答要求
- 时间限制:C/C++1000ms,其他语言:2000ms
- 内存限制:C/C++256MB,其他语言:512MB
输入
- 第一行输入为N,N为服务的总个数(1<= N<= 5000)
- 第二行输入为M,M为指定启动服务的编号(0 <= M < 5000)
- 接下来N行,是从编号0服务 ~ 编号N-1服务的服务依赖表,每一行第一个数字是该服务依赖的服务个数T(0 <= T < 5000),后面T个数字分别是对应的依赖服务编号。
输出
- 为了避免不同算法的服务加载顺序不同,请按服务编号从小到大依次输出所有前置服务的编号,不包括指定启动的服务编号自身。
- 如果没有依赖的前置服务则输出 null。
- 如果服务无法启动(出现循环依赖,则服务无法启动,样例2为最简单的循环依赖)或其他异常,则输出 -1。
样例1
输入
4 2 0 1,0 1,1 2,0,1
输出
0,1
代码实现
C++
#include <bits/stdc++.h> using namespace std; const int MAXN = 5005; class Node { public: set<int> depends; };
隐藏内容
此处内容需要权限查看
会员免费查看声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。