Олимпиады по программированию olympiads.ru |
|
Олимпиада проводится при поддержке Компьютерного супермаркета "НИКС" и компании Genius Информационная поддержка: II Всероссийская заочная олимпиада школьников по информатике, 2007/08 учебный годЗадача I. Игра с обменами (OFF-LINE проверка)
Вася и Петя играют в увлекательную игру. Вася выписал подряд числа от 1 до N. А Петя выписал P пар чисел (Ai, Bi). Теперь Вася преобразует имеющуюся последовательность чисел - он меняет местами числа в этой последовательности. Если некоторая пара чисел (Ai, Bi) выписана Петей, то Вася имеет право в любой момент взять числа из последовательности, стоящие на местах Ai и Bi и поменять их местами. Например, если N=5. Тогда изначально Васей выписана последовательность Пусть Петя написал две пары чисел: (1,2) и (2,5). Тогда Вася в любой момент может менять числа, стоящие на 1 и 2 местах, или же числа, стоящие на 2 и 5 местах. Например, он может последовательно получить следующие последовательности:
Пете не показываются промежуточные последовательности, а выписывается лишь полученная на последнем шаге. От Пети требуется проверить, мог ли Вася получить такую последовательность не нарушая правил игры, и если мог, то указать, в результате какой последовательности обменов (при этом не требуется, чтобы число обменов было минимально возможным). Напишите программу, которая поможет Пете справиться с этой задачей. Формат входных данных Сначала записано число N (1≤N≤100) - количество чисел в последовательности. Дальше идет N чисел - последовательность, полученная Васей (в последовательности каждое из чисел от 1 до N встречается ровно один раз). Далее идет число P (0≤P≤10000) - количество пар чисел, выписанных Петей. Далее записано P пар чисел (каждое число пары - из диапазона от 1 до N). Формат выходных данных В первую строку выходного файла выведите сообщение YES (если такая последовательность могла быть честно получена Васей) и NO (если такую последовательность Вася не мог получить, не нарушая правил игры). В случае, если такая последовательность могла быть получена, далее выведите способ ее получения (если вариантов несколько, выведите любой из них). Сначала выведите число K - количество операций обмена (оно не должно превышать 100000), а затем K пар чисел, задающих номера мест, на которых стоят обмениваемые элементы (числа в паре могут быть выданы в любом порядке). Гарантируется, что если решение существует, то существует решение с числом обменов, не превышающим 100000. Примеры
|