Какой хороший алгоритм для решения этой проблемы?
У меня есть три группы людей - группа A, группа B и группа C. В каждой группе одинаковое количество людей. У каждого из них есть список людей в других группах, с которыми они готовы работать. Я хочу объединить всех этих людей в группы из 3 (один из A, один из B и один из C), чтобы все в группе хотели работать с другими людьми в своей группе.
Как быстро найти эти группы? Если нет способа сделать всех счастливыми, тогда алгоритм должен сначала сделать так, чтобы у многих групп было три человека, которые хотят работать друг с другом, а затем сделать так много людей в других группах счастливыми.
Один последний момент: люди соглашаются с тем, с кем они хотят работать (если человек хочет работать с человеком y, тогда y также хочет работать с x). Если бы вы могли также дать большой-O времени работы вашего алгоритма, это было бы здорово!