鍋あり谷あり

テーマを決めずに適当に書いています。

ペアプログラミングのペアを作る

問題。

勉強会か何かで、言語を限定せずにペアプログラミングを行うことを考える。話を簡単にするため、参加人数は偶数。
使える言語は人によって異なる。例えば、
 島地:ruby, C
 佐伯:Java, C, pascal
 原田:Java, perl, python, C
 石田:Java, pascal
という具合。
ペアプログラミングをしたいので、共通言語を持つ人としかペアを組めない。
上記の例では、
 C(島地, 佐伯) Java(原田, 石田)

 C(島地, 原田) Java,pascal(佐伯, 石田)
の二通りの解がある。
で。
会場に開発環境を持ってきているのが島地と佐伯の二人だった場合、実際にペアプログラミングを行うことが出来るようなペアの組み方は、
 C(島地, 原田) Java,pascal(佐伯, 石田)
のみとなる。

この、実際にペアプログラミングを行うことが出来るようなペアの組み方をランダムに出力するプログラムを書け。
ただし、ペアの組み方が存在しない場合はその旨を出力して終了すること。
参加人数は20人程度を想定する。

という問題を考えたんだが、まだ解き方を考えていない。