ABC160 D - Line++
https://atcoder.jp/contests/abc160/tasks/abc160_d
提出
code: python
n, x, y = map(int, input().split())
graph = [[] for _ in range(n+1)]
for i in range(1, n+1):
if (i == 1):
graph1.append(2)
elif (i == n+1):
graphn+1.append(n)
else:
graphi.append(i-1)
graphi.append(i+1)
graphx.append(y)
graphy.append(x)
print(graph)
# BFS
for i in range(1, n + 1):
for j in range(len(graphi)):
print(graphij)
解答
code: python
from collections import deque
n, x, y = map(int, input().split())
paths = [[] for _ in range(n)]
for i in range(n-1):
pathsi.append(i+1)
pathsi+1.append(i)
pathsx-1.append(y-1)
pathsy-1.append(x-1)
# print(paths)
# 1], 0, 2, 3, 1, 3, 2, 4, 1, [3
# 最短距離ごとの組み合わせ数を探索の際に数えていく
# resultx: 最短距離 x の組み合わせ数
result = 0 * n
# 開始地点 (0 ~ n-1) を全部試す
for start in range(n):
# 距離をリセット
dist = -1 * n
# 開始地点を0にしてリセット
diststart = 0
queue = deque(start)
while queue:
now = queue.popleft()
# 現地点から行ける点
for nxt in pathsnow:
if distnxt != -1:
continue
# 最短距離
distnxt = distnow + 1
queue.append(nxt)
# 距離が確定した際、result で数えておく
result[distnxt] += 1
# print(result)
# 0, 10, 8, 2, 0
# 往復で数えているので、2 で割って出力
for r in result1::
print(r//2)
テーマ
#bfs #graph
メモ
AtCoder Beginner Contest 160 D – Line++ をPython3で解く