Todos os desafios
Difícil 0 resolvidos 0% de aceitação

Ordem dos Cursos

Ordene os cursos para que todos os pré-requisitos venham antes.

Os cursos são numerados de 0 a n−1. Cada par [curso, pré-requisito] significa que o pré-requisito deve ser feito antes do curso. Retorne uma ordem para cursar todos os cursos; quando vários cursos estiverem disponíveis, escolha sempre o de menor número primeiro para garantir uma resposta única.

Implemente course_order(n, prerequisites).

Entrada

n: O número de cursos. prerequisites: Pares [curso, pré-requisito].

Saída

Retorne a ordem dos cursos, ou uma lista vazia se houver um ciclo que torne impossível completar todos.

Restrições

1 ≤ n ≤ 100.000; 0 ≤ pares ≤ 200.000

Exemplos

Exemplo 1
Entrada:
n = 4
prerequisites = [
    [1, 0],
    [2, 0],
    [3, 1],
    [3, 2]
]

Saída esperada:
expected = [0, 1, 2, 3]
Entrada:
long long n = 4;
std::vector<std::vector<long long>> prerequisites = {
    {1, 0},
    {2, 0},
    {3, 1},
    {3, 2}
};

Saída esperada:
std::vector<long long> expected = {0, 1, 2, 3};
Entrada:
long n = 4;
long[][] prerequisites = new long[][] {
    new long[] {1, 0},
    new long[] {2, 0},
    new long[] {3, 1},
    new long[] {3, 2}
};

Saída esperada:
long[] expected = new long[] {0, 1, 2, 3};

Explicação

0 primeiro, depois 1 e 2 (sempre o menor número primeiro), depois 3: [0, 1, 2, 3].

Exemplo 2
Entrada:
n = 2
prerequisites = [
    [0, 1],
    [1, 0]
]

Saída esperada:
expected = []
Entrada:
long long n = 2;
std::vector<std::vector<long long>> prerequisites = {
    {0, 1},
    {1, 0}
};

Saída esperada:
std::vector<long long> expected = {};
Entrada:
long n = 2;
long[][] prerequisites = new long[][] {
    new long[] {0, 1},
    new long[] {1, 0}
};

Saída esperada:
long[] expected = new long[] {};

Explicação

Cada curso exige o outro, então não existe uma ordem possível: [].

Referências

Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.

Aprenda com outros

Soluções da comunidade

Ainda não há soluções publicadas. Resolva este desafio para compartilhar a primeira.