解説

この問題はUnionFindを使って効率的に解くことが出来ます。

xxが所属するチームのxorをXX、人yyが所属するチームのxorをYYとし、この2つのチームが同じでないとします。 この時、合併後のxorはXYX ^ Yとなります。^はxorの演算とします。

この操作をUnionFindでマージする時に行えば良いです。チームのxorはその集合の根ノードに持たせます。

実装