Official

G - 友達の輪 / Circle of Friends Editorial by sounansya


友達関係をグラフとして見た時に、各連絡では生徒 \(S_k\) が含まれる連結成分の大きさを求めれば良いです。

これは BFS で求めることもできますが、DSU を使うと実装が非常にシンプルになります。

実装例(Python3)

from atcoder import dsu
import sys

input = sys.stdin.readline

n, m = map(int, input().split())
d = dsu.DSU(n)
for i in range(m):
    u, v = map(int, input().split())
    d.merge(u - 1, v - 1)
q = int(input())
for i in range(q):
    s = int(input()) - 1
    print(d.size(s))

posted:
last update: