COURSE SCHEDULE MEDIUM
problema
Há n matérias, numeradas de 0 a n − 1. Cada item [a, b] da lista
pre diz que é preciso cursar b antes de a. Retorne true se for
possível cursar todas as matérias.
Visto como grafo dirigido, cada [a, b] é uma seta b → a. Só é impossível quando há um
ciclo: as matérias do ciclo esperam umas pelas outras e nenhuma pode ser a primeira.
n = 3, pre = [[1,0],[2,1],[2,0]] → true
Ordem possível: 0, 1, 2.
n = 6, o exemplo 1 mais [[4,3],[5,4],[3,5]] → false
3 → 4 → 5 → 3 é um ciclo. É o exemplo animado abaixo.
Restrições: 1 ≤ n ≤ 2000 · 0 ≤ pre.length ≤ 5000 · pares [a, b] distintos, com a ≠ b