AtCoder ABC 061 B – Counting Roads Python解説

2021年11月21日

スポンサーリンク

Counting Roads

N 個の都市があり、M 本の道路があります。

i番目の道路は、都市ai​とbiを双方向に結んでいます。
同じ 2 つの都市を結ぶ道路は、1 本とは限りません。

各都市から他の都市に向けて、何本の道路が伸びているか求めてください。

AtCoder株式会社 AtCoder Beginner Contest 061

各都市を結ぶ道路の本数を管理したいので、今回は連想配列を使って解いてみました。

n, m = map(int, input().split())

a = {}

# *1
for i in range(1, n+1):
    a[i] = 0

# *2
for _ in range(m):
    x, y = map(int, input().split())
    a[x] += 1
    a[y] += 1
    
for i in a.values():
    print(i)

(*1)まずは連想配列を使って、各都市の道路を0 で初期化しています。都市の番号は1から始まるので初期化する際、気を付けましょう。

(*2)続くfor文では入力から受け取った値をx、yに格納しています。ここで与えられた値が道路の本数なので、a[x]、a[y]の道路をそれぞれ+1しています。

最後に辞書の値だけ使うので、values()で値だけ出力します。