Hmmm. Я взял курс в теории графов, но более простой должен просто случайным образом переставить Ваш список, пара каждая последовательная группа, затем подкачать любой элемент, который запрещен с другим. С тех пор нет никакого запрещенного человека ни в какой данной паре, подкачка будет всегда успешно выполняться, если Вы не позволите подкачки с выбранной группой. Ваш алгоритм слишком сложен.