Описание
В деревне живут N девушек и столько же юношей. Каждый юноша оценивает всех девушек числами от 1 до N (разных девушек – разными числами), а каждая из девушек аналогичным образом оценивает юношей. Устойчивым паросочетанием называется такое взаимно-однозначное соответствие между юношами и девушками, что для любых двух юношей Ю1 и Ю2 и соответствующих им девушек Д1 и Д2 выполняются следующие два условия:

  1. либо Ю1 оценивает Д1 выше, чем Д2 , либо Д2 оценивает Ю2 выше, чем Ю1

  2. либо Ю2 оценивает Д2 выше, чем Д1 , либо Д1 оценивает Ю1 выше, чем Ю2


Задание
Напишите программу, которая по заданным оценкам находит некоторое устойчивое паросочетание


Входные данные
Первая строка входного файла содержит целое число N (1
N200). В строках с номерами от 2 до N+1 находятся наборы из N чисел, которыми юноши с номерами от 1 до N оценивают девушек. В строках с номерами от N+2 до 2N+1 находятся наборы из N чисел, которыми девушки оценивают юношей. Числа в наборах разделяются пробелами

Выходные данные
В выходной файл выведите номера девушек, соответствующих юношам с номерами от 1 до N по порядку. Числа должны быть разделены пробелами и/или символами перевода строки


Например:

TEENAGER.IN
3
1 2 3
2 3 1
1 2 3
1 2 3
2 3 1
3 1 2


TEENAGER
.OUT
3 2 1





Комментарии
Докажите, что устойчивое паросочетание всегда существует, и придумайте эффективный алгоритм его нахождения. В [Вирт 89, п. 3.6] обсуждается применение метода перебора с возвратом для нахождения всех устойчивых паросочетаний
 



Решение
Решение авторами не представлено
 


© Особенности национальных задач по информатике