Ctrl K

Самый длинный общий участок маршрутов

Сложная
В стране cities городов с номерами от 0 до cities - 1, и между любыми двумя есть дорога. Несколько друзей путешествуют, и маршрут каждого записан в routes[i] — города в порядке посещения. Город может встречаться в маршруте несколько раз, но не два раза подряд. **Участок** маршрута — это несколько городов, идущих в нём подряд. Верните длину (число городов) самого длинного участка, который есть в маршруте каждого друга, или 0, если общего участка нет.
Пример 1
cities=6, routes=[[0, 1, 2, 3], [5, 1, 2, 3, 4], [2, 3, 1]] → 2

Участок 2 → 3 есть у всех троих. Более длинный 1 → 2 → 3 у третьего маршрута не встречается.

Пример 2
cities=4, routes=[[0, 1], [2, 3]] → 0

У маршрутов нет ни одного общего города — ответ 0.

Пример 3
cities=3, routes=[[0, 1, 0, 1], [1, 0, 1, 0]] → 3

Оба маршрута содержат участок 0 → 1 → 0 (и 1 → 0 → 1), а четыре города подряд у них не совпадают.

Ограничения
  • 1 ≤ cities ≤ 10⁵
  • 2 ≤ len(routes) ≤ 10⁵
  • Каждый маршрут непустой, суммарная длина маршрутов не больше 10⁵
  • 0 ≤ routes[i][j] < cities
  • Соседние города в маршруте различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый длинный повтор СложнаяХвосты, повторяющие начало СложнаяФраза из начал слов: длинная версия СложнаяСамый длинный общий кусок СредняяСамый длинный повтор Средняя
загружаем Python…
Вход
cities=6, routes=[[0, 1, 2, 3], [5, 1, 2, 3, 4], [2, 3, 1]]
Ожидается
2

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