公式
C - 感染経路の追跡 / Tracing Infection Routes 解説
by
C - 感染経路の追跡 / Tracing Infection Routes 解説
by
sounansya
印刷ページ
頂点 \(S\) から各頂点までの最短距離を求め、距離が \(K\) 以下のちょ点数を出力すれば良いです。
各頂点までの最短距離は幅優先探索などで計算することができます。
from collections import deque
n, m, s, k = map(int, input().split())
g = [[] for _ in range(n)]
for i in range(m):
u, v = map(int, input().split())
g[u - 1].append(v - 1)
g[v - 1].append(u - 1)
INF = 10**9
q = deque()
d = [INF] * n
q.append(s - 1)
d[s - 1] = 0
while q:
x = q.popleft()
for y in g[x]:
if d[y] != INF:
continue
d[y] = d[x] + 1
q.append(y)
ans = 0
for v in d:
ans += v <= k
print(ans)
投稿日時:
最終更新:
