首页 > 试题广场 >

检测循环依赖

[编程题]检测循环依赖
  • 热度指数:1456 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
为了毕业你需要选择 n 门课程,这 n 门课程中存在一定的依赖关系,例如想要完成 B 课程,必须先完成 A 课程,请你找出一个可以完成全部课程的顺序,如果无论如何选择都无法完成全部课程则返回空数组。

依赖关系以如下方式输入:
[[2,1],[3,2]]
即要完成课程 2 ,必须先完成 1 , 要完成课程 3 ,必须先完成课程 2,答案 [1,2,3] 即可。
但也可能出现类似
[[2,1],[1,2]]
要完成课程 2 ,必须先完成 1 ,要完成课程 1 ,必须先完成课程 1 ,则无解,返回一个空数组即可。

数据范围: 1 \leq n \leq 2000 \ ,依赖关系的数量满足 0 \leq m \leq n*(n-1) \ ,保证不会有一组一模一样的依赖关系。
示例1

输入

[[1,0],[2,1]],3

输出

[0,1,2]
示例2

输入

[[1,0],[2,1]],4

输出

[0,1,2,3]

说明

返回 [3,0,1,2] ,[0,3,1,2] , [0,1,3,2]  也都合法  
示例3

输入

[[1,0],[0,1]],2

输出

[]

说明

  存在环  

这道题你会答吗?花几分钟告诉大家答案吧!

问题信息

难度:
1条回答 2676浏览

热门推荐

通过挑战的用户

查看代码