Контест Senior Symfony кратко обновлено

Порядок создания сервисов и поиск циклов

Условие

При компиляции контейнера нужно понять, в каком порядке создавать сервисы. Каждая строка описывает сервис и его зависимости.

Обходите сервисы в порядке объявления, для каждого сначала (рекурсивно, в порядке перечисления) его зависимости, затем сам сервис; уже созданные пропускаются.

Вывод: порядок создания через пробел. Если зависимость не объявлена, выведите ERROR missing X for Y для первого такого случая (по порядку объявления сервисов и их зависимостей), проверяя это до обхода. Если при обходе найден цикл, выведите ERROR cycle A -> B -> A (путь от первого сервиса цикла до повторного входа в него).

Ввод: n (n ≤ 2000), затем строки имя зависимость....

Пример

4
mailer logger transport
logger
transport logger
app mailer
logger transport mailer app

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.