Editorial for 1964: THE ROOOOOK
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
В цій задачі скористаємося максимальним паросполученням.
Вершини в першій долі будуть позначати вертикалі, а в другій — горизонталі.
ROOKs будуть позначати ребра. ROOK, що розміщена в позиції ~(x_i, y_i)~, з'єднує ребром вершину ~x_i~ першої долі та ~y_i~ другої долі.
Оскільки в максимальному паросполученні одна вершина не може бути з'єднана з більше ніж одним ребром, на кожній вертикалі або горизонталі буде не більше однієї ROOK.
Варто зауважити, що в цій задачі хорошим рішенням є використати деякі оптимізації стосовно алгоритму куна:
Запускати пошук з половини, де є менше вершин.
Перед запуском основного алгоритму розставити деякі ребра жадно, а потім покращити рішення алгоритмом, це прискорить роботу алгоритму.
Коментарі