結果
| 問題 |
No.2673 A present from B
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-03-16 02:16:36 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 706 ms / 2,000 ms |
| コード長 | 946 bytes |
| コンパイル時間 | 248 ms |
| コンパイル使用メモリ | 82,524 KB |
| 実行使用メモリ | 244,224 KB |
| 最終ジャッジ日時 | 2024-09-30 03:45:12 |
| 合計ジャッジ時間 | 6,162 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 24 |
ソースコード
from collections import deque
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
A = list(map(int, input().split()))
L = (2*M+3)*N
G = [set() for _ in range(L)]
for i in range(N):
for j in range(L//N-1):
G[(j+1)*N+i].add((j*N+i, 0))
for i in range(1, 2*M+3, 2):
for j in range(N-1):
G[i*N+j].add((i*N+j+1, 1))
G[i*N+j+1].add((i*N+j, 1))
for i, a in enumerate(A):
a-=1
u = (i*2+2)*N+a
v = (i*2+2)*N+a+1
G[u].add((v-N, 0))
G[v].add((u-N, 0))
G[u].discard((u-N, 0))
G[v].discard((v-N, 0))
#print(G)
deq = deque()
st = (2*M+2)*N
deq.append(st)
INF = 10**9
dist = [INF for _ in range(L)]
dist[st] = 0
while deq:
v = deq.popleft()
for nv, cost in G[v]:
if dist[nv]>dist[v]+cost:
dist[nv] = dist[v] + cost
if cost==0:
deq.appendleft(nv)
else:
deq.append(nv)
#print(dist)
print(*dist[1:N])