Задача C. Тапкодер

Автор:Жюри всероссийской олимпиады школьников 2008   Ограничение времени:2 сек
Входной файл:topcoder.in   Ограничение памяти:64 Мб
Выходной файл:topcoder.out  
Максимальный балл:100  

Условие

Ассоциация Тапкодер организует Всемирное парное соревнование сильнейших программистов. К участию в соревновании допущены первые 2 k зарегистрировавшихся участников, которым присвоены номера от 1 до 2 k.

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

Организаторам стало известно, что некоторые пары участников заранее договорились о результате встречи между собой, если такая встреча состоится. Для всех остальных встреч, кроме n договорных, возможен любой исход.

Некоторые m участников соревнования представили свои резюме в ассоциацию Тапкодер с целью поступления на работу. Организаторов интересует, до какого тура может дойти каждый из претендентов при наиболее благоприятном для него стечении обстоятельств. При этом для каждого участника в отдельности считается, что все недоговорные встречи, в том числе те, в которых он не участвует, закончатся так, как ему выгодно, а все состоявшиеся договорные встречи закончатся в соответствии с имеющимися договоренностями.

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

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

В первой строке входного файла заданы три целых числа k, n и m. В следующих n строках описаны n пар участников, которые договорились между собой о том, что первый из двух участников пары выиграет встречу, если она состоится. Гарантируется, что каждая пара участников присутствует во входных данных не более одного раза, при этом, если задана пара x y, то пары y x быть не может, кроме того, x ≠ y. В последней строке файла перечислены номера участников, желающих работать в Тапкодере, в порядке возрастания их номеров. Все номера претендентов на работу различны.

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

Выходной файл должен содержать m целых чисел - максимальные номера туров, до которых могут дойти соответствующие претенденты на работу. Туры нумеруются от 1 до k.

Комментарии к примерам:

  1. У каждого из участников есть возможность выйти в финал, так как договорных матчей нет.
  2. Если четвертый участник выиграет у третьего, то договорная встреча первого и третьего не состоится, что благоприятно для первого.
  3. Первому участнику благоприятно во втором туре играть с третьим, а не с четвертым, в свою очередь, четвертый может выиграть у третьего и также выйти в финал.

Ограничения

1 ≤ k ≤ 60

0 ≤ n ≤ 105

1 ≤ m ≤ 105

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

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

0.038s 0.007s 15