ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила

2219. Философский вопрос

Ограничение времени: 2.5 секунды
Ограничение памяти: 256 МБ
В новом семестре Ваня решил серьёзно взяться за учебу и перестать прогуливать пары, поэтому сейчас он торопится на пару по философии. Как известно, любое здание университета представляет собой систему из N аудиторий, пронумерованных натуральными числами от 1 до N, и M коридоров между ними. Ванин университет не исключение. Любому студенту известно, что все коридоры имеют одинаковую длину, по любому из коридоров можно ходить в любую сторону, никакой коридор не соединяет аудиторию саму с собой, никакие две аудитории не соединены больше, чем одним коридором, и что из любой аудитории можно добраться в любую, не покидая здание.
Поднявшись на шестой этаж, Ваня понял, что больше не может сделать ни шагу, не выпив перед этим кофе. К счастью, у Вани с собой есть целых K стаканчиков кофе, он точно знает, что, выпив i-й стакан, сможет пройти ровно ai коридоров (даже если он дойдет до нужной аудитории, посетив меньше коридоров, то всё равно не сможет остановиться, пока не пройдёт ai коридоров).
Сейчас Ваня находится в аудитории с номером 1 и ему нужно решить философский вопрос — сколько же стаканчиков кофе нужно выпить, чтобы дойти до нужной аудитории. Ваня опаздывает, поэтому он хочет выпить наименьшее число. Ещё одна проблема в том, что он точно не помнит, в какой аудитории будет проходить пара, поэтому хочет ответить на вопрос для каждой возможной аудитории независимо.
Более формально, для каждой аудитории v независимо надо найти такое наименьшее число x, что существует такое подмножество стаканчиков с индексами i1, i2, …, ix, для которого найдётся путь из аудитории 1 в аудиторию v, состоящий ровно из ai1 + ai2 + … + aix коридоров. Аудитории и коридоры в пути могут использоваться более одного раза, в частности, можно пройти по какому-то коридору из аудитории a в b и затем сразу же вернуться снова в a. Если такого x не существует, то выведите вместо него −1. Сумму пустого подмножества стаканчиков можно считать равной 0.

Исходные данные

В первой строке содержатся три целых числа N, M и K — количество аудиторий, коридоров и стаканчиков кофе соответственно (2 ≤ N ≤ 105; N − 1 ≤ M ≤ 2 · 105; 1 ≤ K ≤ 105).
Следующие M строк содержат по два целых числа ui и vi — описание очередного коридора, соединяющего аудитории ui и vi (1 ≤ ui, viN). Гарантируется, что никакой коридор не соединяет аудиторию саму с собой, что каждый коридор во входных данных встречается не более одного раза и что предоставленный план университета является связным.
Следующая строка содержит K целых чисел a1, a2, … , aK — описания стаканчиков кофе Вани (1 ≤ ai ≤ 109).

Результат

В единственной строке выведите N чисел — ответ для каждой вершины.

Примеры

исходные данныерезультат
5 4 4
1 2
2 3
3 4
4 5
1 2 3 4
0 1 1 1 1
5 4 2
1 2
2 3
3 4
4 5
1 2
0 1 1 2 -1
2 1 1
1 2
999
0 1

Замечания

В первом примере возможные расстояния до аудиторий 2, 3, 4, 5 равны 1, 2, 3, 4 коридоров соответственно. Для любого из этих расстояний найдётся один подходящий стаканчик.
Во втором примере до аудитории 5 можно добраться через 4 коридора, а кофе хватит максимум на 2 + 1 = 3 коридора.
В третьем примере, пройдя 999 раз по единственному коридору, Ваня в итоге окажется в аудитории 2.
Автор задачи: Иван Московченко
Источник задачи: Квалификационный тур Уральского регионального чемпионата ICPC 2025