AtCoder上にある問題のうち、AtCoder Problemsでdiff 800以上と判定されているものを順番に解いていく企画。
基本的な考え方は全てコード中のコメントに入れてあるので、参照のこと。
出典:
AtCoder Beginnaer Contest 016 C – 友達の友達
友達は友達の友達ではないので注意する。ややこしいな。
いろんな解き方・書き方があるので、いろいろ試してみるのも面白いかもしれない。
ここではsetを用いて、割とサボった書き方をしている。答えが通るならサボるのは美徳なので、これでいいのだ。
def main():
N, M = map(int, input().split())
relations = [list(map(int, input().split())) for _ in range(M)]
friends = [[] for _ in range(N+1)]
for a, b in relations:
friends[a].append(b)
friends[b].append(a)
for i in range(1, N+1):
f_of_f = set()
for f in friends[i]:
f_of_f = f_of_f | set(friends[f])
excludes = {i} | set(friends[i])
print(len(f_of_f - excludes))
main()
関連