# Course Schedule

30 Nov 2019## Course Schedule

### Description

There are a total of *n* courses you have to take, labeled from `0`

to `n-1`

.

Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as a pair: `[0,1]`

Given the total number of courses and a list of prerequisite **pairs**, is it possible for you to finish all courses?

**Example 1:**

```
Input: 2, [[1,0]]
Output: true
Explanation: There are a total of 2 courses to take.
To take course 1 you should have finished course 0. So it is possible.
```

**Example 2:**

```
Input: 2, [[1,0],[0,1]]
Output: false
Explanation: There are a total of 2 courses to take.
To take course 1 you should have finished course 0, and to take course 0 you should
also have finished course 1. So it is impossible.
```

### Explain

This is a topological sort problem. You can first construct the graph using each edges. And calculate indegree for each course. Once it is finished. You can push all 0-indegree courses into a queue. Keep poll the queue, and find all the related courses for this course, –indegree. Increase the count, And put the 0-indegree course into it.