以前、『アルゴリズムC〈第3巻〉グラフ・数理・トピックス』のp34で紹介されている「合併-発見アルゴリズム」をPythonで作ってみたのですが、
「D - Friend Suggestions」を解くときに、同じグループに所属している要素の数を求める必要が出てきたので、size()
メッドを追加しました。
size()メソッドの追加
def size(self, x): while uf.dad[x] >= 0: x = uf.dad[x] return (abs(self.dad[x]) + 1) // 2
AtCoder Beginner Contest 157 D
作成したUnionFind
を使って以下の問題を解いてみました。