Ctrl K

Сколько семестров на всю программу

Средняя
В учебной программе modules модулей, пронумерованных от 1 до modules. Каждая пара [a, b] в prereqs означает, что модуль a нужно закончить раньше, чем начинать модуль b. За один семестр можно пройти сколько угодно модулей — лишь бы все их предварительные модули были закрыты в прошлых семестрах. Верните наименьшее число семестров, за которое можно пройти всю программу. Если пройти все модули невозможно, верните -1.
Пример 1
modules=4, prereqs=[[1, 2], [1, 3], [3, 4]] → 3

Первый семестр — модуль 1, второй — модули 2 и 3, третий — модуль 4.

Пример 2
modules=3, prereqs=[[2, 3], [3, 2]] → -1

Модули 2 и 3 требуют друг друга, их никогда не начать.

Пример 3
modules=5, prereqs=[[5, 1]] → 2
Ограничения
  • 1 ≤ modules ≤ 10⁴
  • 1 ≤ len(prereqs) ≤ 10⁴
  • prereqs[i] = [a, b], 1 ≤ a, b ≤ modules, a ≠ b
  • Все пары в prereqs различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПорядок сборки модулей СредняяОчередь на курсы СредняяЛучшие корни дерева СредняяОднозначный порядок по фрагментам СредняяПути, которые всегда заканчиваются Средняя
загружаем Python…
Вход
modules=4, prereqs=[[1, 2], [1, 3], [3, 4]]
Ожидается
3

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 78 тестов на сервере, включая скрытые.