- Описание
- Отправленные решения
16. Пересадки
Метрополитен состоит из нескольких линий метро. Все станции метро в городе пронумерованы натуральными числами от 1 до N. На каждой линии расположено несколько станций. Если одна и та же станция расположена сразу на нескольких линиях, то она является станцией пересадки и на этой станции можно пересесть с любой линии, которая через нее проходит, на любую другую (опять же проходящую через нее).
Напишите программу, которая по данному вам описанию метрополитена определит, с каким минимальным числом пересадок можно добраться со станции A на станцию B. Если данный метрополитен не соединяет все линии в одну систему, то может так получиться, что со станции A на станцию B добраться невозможно, в этом случае ваша программа должна это определить.
Формат ввода
Сначала вводится число N — количество станций метро в городе (2 $\le$ N $\le$ 100). Далее следует число M — количество линий метро (1 $\le$ M $\le$ 20). Далее идет описание M линий. Описание каждой линии состоит из числа $P_i$ — количество станций на этой линии (2 $\le$ $P_i$ $\le$ 50) и $P_i$ чисел, задающих номера станций, через которые проходит линия (ни через какую станцию линия не проходит дважды).
Затем вводятся два различных числа: A — номер начальной станции, и B — номер станции, на которую нам нужно попасть. При этом если через станцию A проходит несколько линий, то мы можем спуститься на любую из них. Так же если через станцию B проходит несколько линий, то нам не важно, по какой линии мы приедем.
Формат вывода
Выведите минимальное количество пересадок, которое нам понадобится. Если добраться со станции A на станцию B невозможно, программа должна вывести одно число –1 (минус один).
Ограничения
Ограничение времени
1 с
Ограничение памяти
64 МБ
Пример 1
5
2
4 1 2 3 4
2 5 3
3 1
0