Задача B. Электрички на перегонах не меняют

Автор:Жюри ROI-2007   Ограничение времени:1 сек
Входной файл:rail.in   Ограничение памяти:256 Мб
Выходной файл:rail.out  
Максимальный балл:100  

Условие

На пригородной железной дороге N станций и M соединяющих их перегонов. Любые две станции соединены не более чем одним перегоном. Сеть перегонов устроена так, что, отправившись от любой станции, можно вернуться на нее, только проехав хотя бы один перегон дважды. На железной дороге организовано движение электричек. Каждая электричка ходит в обоих направлениях по своему маршруту между двумя конечными станциями и останавливается на всех промежуточных станциях.

Для удобства пассажиров руководство железной дороги решило ввести новую систему оплаты проезда. По этой системе каждой станции присваивается некоторое целое число, называемое тарифным номером этой станции. Стоимость проезда между двумя станциями без пересадок определяется модулем разности тарифных номеров этих станций. Тарифные номера станций вдоль маршрута каждой электрички должны изменяться монотонно, то есть при движении в каком-либо направлении строго возрастать и, следовательно, строго убывать при движении в обратном направлении. Это обеспечивает рост стоимости проезда с увеличением количества пройденных перегонов.

Требуется написать программу, которая назначит каждой станции тарифный номер.

Формат входного файла

В первой строке входного файла содержатся два целых числа: N — количество станций (2 ≤ N ≤ 105), и M — количество перегонов между ними (1 ≤ M ≤ N). В последующих M строках записаны пары целых чисел a, b (a ≠ b, 1 ≤ a ≤ N, 1 ≤ b ≤ N), означающие наличие перегона между станциями a и b. За ними в отдельной строке записано единственное целое положительное число K — количество маршрутов электричек. В последующих K строках идут описания маршрутов электричек, по одному на строке. Каждое описание представляет собой последовательность целых чисел — номеров всех станций маршрута в порядке одного из двух возможных направлений следования электрички. Описание маршрута заканчивается числом 0.

Все номера станций в описании маршрута различны. Количество станций в каждом маршруте не менее двух. Любые две последовательные станции в маршруте каждой электрички соединены перегоном. Суммарное количество станций в описаниях всех маршрутов не превосходит 2 × 105. Могут быть станции и перегоны, через которые не проходит ни одна электричка.

Формат выходного файла

В первую строку выходного файла выведите NO, если искомого назначения тарифных номеров не существует. В противном случае в первую строку выведите YES, а в следующей строке — N целых положительных чисел, где i-е число — тарифный номер i-й станции. Тарифный номер каждой станции должен находиться в диапазоне от 1 до N.

Примеры тестов

Входной файл (rail.in) Выходной файл (rail.out)
1
4 3
1 4
2 4
3 4
3
1 4 2 0
2 4 3 0
3 4 1 0
NO
2
5 4
1 5
2 5
3 5
4 5
4
1 5 2 0
2 5 3 0
3 5 4 0
4 5 1 0
YES
1 4 1 5 3

0.042s 0.007s 17