Номер задачи - 9
Задача Сталкер
Ограничение: 2 секунды на тест.
В городе Н при невыясненных обстоятельствах территория одного из заводов
превратилась в аномальную зону. Все подъезды к территории были перекрыты, а
сама она получила название промзоны. В промзоне находятся N зданий, некоторые
из них соединены дорогами. По любой дороге можно перемещаться в обоих
направлениях.
Начинающий сталкер получил задание добраться до склада в промзоне. Он нашел
в электронном архиве несколько карт территории промзоны. Так как карты
составлялись разными людьми, то на каждой из них есть информация только о
некоторых дорогах промзоны. Одна и та же дорога может присутствовать на
нескольких картах.
В пути сталкер может загружать из архива на мобильный телефон по одной
карте. При загрузке новой карты предыдущая в памяти телефона не сохраняется.
Сталкер может перемещаться лишь по дорогам, отмеченным на карте, загруженной
на данный момент. Каждая загрузка карты стоит 1 рубль. Для минимизации
расходов сталкеру нужно выбрать такой маршрут, чтобы как можно меньшее число
раз загружать карты. Сталкер может загружать одну и ту же карту несколько раз,
при этом придется заплатить за каждую загрузку. Изначально в памяти мобильного
телефона нет никакой карты.
Требуется написать программу, которая вычисляет минимальную сумму расходов,
необходимую сталкеру, чтобы добраться от входа в промзону до склада.
Формат входных данных
В первой строке входного файла находятся два натуральных числа
N и K (2 ≤ N ≤ 2000; 1 ≤ K ≤ 2000) —
количество зданий промзоны и количество карт соответственно. Вход в промзону
находится в здании с номером 1, а склад — в здании с номером N.
В последующих строках находится информация об имеющихся картах. Первая
строка описания i-ой карты содержит число ri —
количество дорог, обозначенных на i-ой карте. Затем идут
ri строк, содержащие по два натуральных числа a и
b (1 ≤ a, b ≤ N; a ≠ b),
означающих наличие на i-ой карте дороги, соединяющей здания a
и b. Суммарное количество дорог, обозначенных на всех картах,
не превышает 300000 (r1 + r2 + ... +
rK ≤ 300000).
Формат выходных данных
В выходной файл необходимо вывести одно число — минимальную сумму расходов
сталкера. В случае, если до склада добраться невозможно, выведите число -1.
Примеры
Вход | Выход
|
---|
5 3
1
3 4
3
1 2
1 3
2 4
1
4 5
|
2
|
5 3
2
3 2
4 5
1
2 1
2
1 3
5 4
|
-1
|