Ctrl K
Курс · шаг 52 из 79К шагуДальше

Порядок сборки модулей

Средняя
В проекте n модулей, пронумерованных от 0 до n - 1. Список deps описывает зависимости между ними: пара [a, b] означает, что модуль a использует модуль b, поэтому b нужно собрать раньше a. Модули собираются по одному. Определите, существует ли порядок, в котором можно собрать все n модулей, не нарушив ни одной зависимости. Верните True, если такой порядок есть, и False, если нет.
Пример 1
n=4, deps=[[1, 0], [2, 1], [3, 1]] → True

Подходит порядок 0, 1, 2, 3: модуль 1 ждёт только 0, а модули 2 и 3 — только 1.

Пример 2
n=3, deps=[[0, 1], [1, 2], [2, 0]] → False

Модуль 0 ждёт 1, модуль 1 ждёт 2, а модуль 2 ждёт 0 — замкнутый круг, начать не с чего.

Пример 3
n=5, deps=[] → True

Зависимостей нет, модули можно собирать в любом порядке.

Ограничения
  • 1 ≤ n ≤ 2000
  • 0 ≤ длина deps ≤ 5000
  • каждый элемент deps — пара [a, b], где 0 ≤ a, b < n
  • все пары в deps различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиОчередь на курсы СредняяЛучшие корни дерева СредняяПути, которые всегда заканчиваются СредняяСамый длинный поход по лесу СредняяНужен ли этот шаг раньше Средняя
загружаем Python…
Вход
n=4, deps=[[1, 0], [2, 1], [3, 1]]
Ожидается
True

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