printРабочее место участника

printЗадачи

1662. Шоссе

Ограничения: время – 2s/4s, память – 128MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Во Флатландии `n` городов, расположенных в различных точках плоскости. Известно, что никакие три города не лежат на одной прямой.
Правительство решило построить в стране сеть сверхскоростных шоссе. Сеть шоссе должна быть такой, чтобы из любого города можно было проехать в любой другой по построенным шоссе. А в целях экономии средств было решено, что путь, соединяющий любые два города, должен быть единственным. Каждое шоссе представляет собой отрезок, соединяющий некоторую пару городов.
Завод, выполняющий этот госзаказ, подготовил проект сети шоссе. Проект представляет собой описание `n\ -\ 1` шоссе. Каждое шоссе задается городами, которые оно соединяет. В целях секретности вместо названий городов в проекте были использованы коды — числа от 1 до `n`.
Однако когда дело дошло до реализации проекта, выяснилось, что документ, в котором было указано соответствие номеров городам, утерян. Поскольку проект приурочен к пятисотлетию культурной столицы Флатландии, переделывать проект полностью оказалось невозможно. Поэтому было решено установить некоторое новое соответствие номеров городам.
При попытке это сделать разработчики проекта столкнулись со следующей проблемой. В соответствии с техническими нормами строительства, недопустимо, чтобы шоссе пересекались вне городов. Поэтому не любое сопоставление номеров городам допустимо. После пары бессонных ночей главный инженер завода решил поручить спасение проекта вам.
Ваша задача — таким образом сопоставить числам от 1 до `n` города, чтобы после реализации проекта шоссе не пересекались вне городов, которые они соединяют.
Ввод
В первой строке входного файла содержится целое число `n` — количество городов во Флатландии (`2\ ≤\ n\ ≤\ 1500`).
Далее следует `n` описаний городов. Описание каждого города состоит из двух строк. Первая строка содержит название города — строку, состоящую из символов с ASCII-кодами от 33 до 127. Названия различных городов не совпадают. Длина названия города не превышает 60 символов. Вторая строка описания города содержит два целых числа `x` и `y` — координаты города. Координаты не превышают `10^4` по абсолютной величине.
Далее следуют `n\ -\ 1` строк, которые описывают проект строительства сети шоссе в его текущем состоянии. Каждая строка содержит по два целых числа — номера городов, соединенных шоссе в проекте. Никакое шоссе в проекте не соединяет город сам с собой, никакие два города не соединены более чем одним шоссе.
Вывод
Выведите в выходной файл `n` строк, `i`-я из этих строк должна содержать название города, который следует сопоставить числу `i` в проекте. Если решений несколько, выведите любое.
Если решения не существует, выведите в выходной файл "No solution".

Пример ввода

7
Moscow
2 2
St-Petersburg
0 4
Kirov
6 3
Saratov
5 0
Rybinsk
1 1
Petrozavodsk
2 6
Barnaul
10 -1
1 2
2 4
3 5
4 3
4 7
3 6

Пример вывода

Rybinsk
Moscow
Kirov
St-Petersburg
Saratov
Barnaul
Petrozavodsk
15065.png
Источник: VI Всероссийская командная олимпиада школьников по программированию, 2005
loading