Ctrl K

Маршруты с чередованием цветов

Средняя
Есть n узлов с номерами от 0 до n - 1 и односторонние дороги двух цветов: red[i] = [a, b] — красная дорога из a в b, blue[j] = [a, b] — синяя. Бывают петли (дорога из узла в него же) и несколько дорог между одной парой узлов. Маршрут из узла 0 считается допустимым, если цвета дорог на нём чередуются: после красной идёт синяя, после синей — красная. Первая дорога может быть любого цвета. Верните список длины n: на позиции x — наименьшее число дорог в допустимом маршруте из 0 в x, или -1, если такого маршрута нет. Для самого узла 0 ответ 0.
Пример 1
n=4, red=[[0, 1], [2, 3]], blue=[[1, 2], [0, 2]] → [0, 1, 1, 2]

До 1 — красная дорога, до 2 — сразу синяя. До 3: синяя 0 → 2 и красная 2 → 3, итого 2. Маршрут 0 → 1 → 2 → 3 тоже чередуется, но он длиннее.

Пример 2
n=3, red=[[0, 1], [1, 2]], blue=[] → [0, 1, -1]

До 2 можно дойти только по двум красным дорогам подряд — так нельзя, ответ -1.

Ограничения
  • 1 ≤ n ≤ 100
  • 0 ≤ len(red), len(blue) ≤ 400
  • red[i] = [a, b], blue[j] = [a, b], 0 ≤ a, b < n
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПорядок сборки модулей СредняяОчередь на курсы СредняяСкладываются ли связи в дерево СредняяЛучшие корни дерева СредняяСколько изолированных групп в сети Средняя
загружаем Python…
Вход
n=4, red=[[0, 1], [2, 3]], blue=[[1, 2], [0, 2]]
Ожидается
[0, 1, 1, 2]

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