#P4068. 课程表

课程表

题目内容

你这个学期必须选修 numCoursesnumCourses 门课程,记为 00numCourses1numCourses - 1

在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisitesprerequisites 给出,其中 prerequisites[i]=[ai,bi]prerequisites[i] = [ai, bi] ,表示如果要学习课程 aia_i则 必须 先学习课程 bib_i

  • 例如,先修课程对 [0,1][0, 1] 表示:想要学习课程 00,你需要先完成课程 11

请你判断是否可能完成所有课程的学习?如果可以,返回 truetrue ;否则,返回 falsefalse

输入描述

  • 第一行输入一个整数 numCoursesnumCourses,表示课程总数。
  • 第二行输入一个整数 mm,表示先修课程对的数量。
  • 接下来 mm 行,每行输入两个整数 aibia_i b_i,表示课程 aia_i 需要先修 bib_i

输出描述

如果可以完成所有课程的学习,输出 true,否则输出 false。

样例1

输入

2
1
1 0

输出

true

说明

总共有 22 门课程。学习课程 11 之前,你需要完成课程0 0 。这是可能的。

样例2

输入

2
2
1 0
0 1

输出

false

说明

总共有 22 门课程。学习课程 11 之前,你需要先完成课程0 0 ;并且学习课程0 0 之前,你还应先完成课程 11 。这是不可能的。

提示

  • 1<=numCourses<=20001 <= numCourses <= 2000
  • 0<=prerequisites.length<=50000 <= prerequisites.length <= 5000
  • prerequisites[i].length==2prerequisites[i].length == 2
  • 0<=ai,bi<numCourses0 <= a_i, b_i < numCourses
  • prerequisites[i]prerequisites[i]中的所有课程对互不相同