Мне кажется, вы несколько преувеличиваете проблему поиска алгоритма нахождения максимального паросочетания в двудольном графе.
но граф не обязательно двудольный. пример на рисунке
Klad33Ну так да, я же не сказал, что граф создается из кругов, взятых в качестве вершин. Каждую вершину нужно удвоить, одну часть - в левую долю, а вторую - в правую. Потом соединить левую долю с правой, попробуйте подумать, как.
PS. Я, кстати, ещё не доказал, является ли моя идея правильной, поэтому оставляю место для сомнения. Если докажите или опровергните, пните меня здесь, самому интересно стало.