Ограничение по времени: 5.000 секунд
Ограничение по памяти: 500.000 мегабайт
Для Сингуляра решили реализовать собственный эффективный протокол передачи данных между несколькими серверами. Одной из подзадач при реализации протокола является выбор оптимального маршрута, по которому будет передаваться сообщение.
Компьютерная сеть планеты представляет собой связный неориентированный граф без петель и кратных ребер. Сервер 1 хочет послать k
сообщений различным серверам a1 ··· ak. За одну секунду сообщение либо переходит по выбранному ребру, либо остается в этой вершине до следующей секунды. В одну секунду по одному ребру может проходить максимум одно сообщение Временем передачи нескольких сообщений считается время, в которое последнее из этих сообщений достигнет адресата. Реализация протокола сама может выбирать маршрут для каждого сообщения.
Вам поручено реализовать выбор оптимальных маршрутов для набора сообщений таким образом, чтобы время передачи всех сообщений было минимально.
В первой строке заданы два целых числа n, m (1 ≤ n, m ≤ 100) - число вершин и ребер в графе соответственно.
В следующих m строках заданы пары целых чисел u, v (1 ≤ u, v ≤ n) - ребра графа.
В следующей строке задано целое число k (1 ≤ k < n) - количество сообщений. В следующей строке через пробел перечислены номера вершин, в которые нужно послать сообщения ai (1 < ai ≤ n).
В единственной строке выведите искомое время передачи сообщений.
input | output |
---|---|
5 4 1 2 2 3 2 4 2 5 3 3 4 5 |
4 |
9 10 1 2 1 3 2 4 3 4 4 5 5 6 4 6 6 7 6 8 6 9 3 7 8 9 |
5 |