46. Роботы

Не решаласьСложная

В подземелье есть N залов, соединенных туннелями. В некоторых залах находятся роботы, которые одновременно получили команду собраться в одном месте.

Роботы устроены так, что, получив команду, они все начали двигаться с такой скоростью, что туннель между двумя любыми залами преодолевают за 1 минуту. Роботы не могут останавливаться (в том числе и в залах), а также менять направление движения, находясь в туннелях (однако попав в зал, робот может из него пойти по тому же туннелю, по которому он пришёл в этот зал).

Напишите программу, вычисляющую, через какое минимальное время все роботы смогут собраться вместе (в зале или в туннеле).

Формат ввода

Сначала на вход программы поступают числа N — количество залов (1 \le N \le 400) и K — количество туннелей (1 \le K \le 20000). Далее вводится K пар чисел, каждая пара описывает номера залов, соединяемых туннелем (по туннелю можно перемещаться в обе стороны). Между двумя залами может быть несколько туннелей. Туннель может соединять зал с самим собой. Далее следует число M (1 \le M \le 400) — количество роботов. Затем вводятся M чисел, задающих номера залов, где вначале расположены роботы. В одном зале может быть несколько роботов.

Формат вывода

Выведите минимальное время в минутах, через которое роботы могут собраться вместе. Если роботы никогда не смогут собраться вместе, выведите одно число –1 (минус один).

Ограничения

Ограничение времени

1 с

Ограничение памяти

64 МБ

Пример 1

Ввод
4 5
1 2
2 3
3 4
1 4
1 3
3
1 2 4
Вывод
1

Пример 2

Ввод
3 2
1 2
2 3
2
1 3
Вывод
1

Пример 3

Ввод
7 7
1 2 
2 3
3 4
4 1
1 3
2 6
6 7
3
7 2 4
Вывод
2

Теги

Нужно войти, чтобы отправить решение.Войти