結果
| 問題 |
No.2565 はじめてのおつかい
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-11-15 12:46:59 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 245 ms / 2,000 ms |
| コード長 | 893 bytes |
| コンパイル時間 | 348 ms |
| コンパイル使用メモリ | 82,272 KB |
| 実行使用メモリ | 94,080 KB |
| 最終ジャッジ日時 | 2024-11-15 12:47:12 |
| 合計ジャッジ時間 | 12,171 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 50 |
ソースコード
from collections import deque
N,M = map(int,input().split())
G = {i:[] for i in range(1,N+1)}
for _ in range(M):
a,b = map(int,input().split())
G[a].append(b)
INFTY = 10**5+100
dist1 = [INFTY]*(N+1)
dist1[1] = 0
que = deque([1])
while que:
x = que.popleft()
for y in G[x]:
if dist1[y]>=INFTY:
dist1[y] = dist1[x]+1
que.append(y)
dist2 = [INFTY]*(N+1)
dist2[N-1] = 0
que = deque([N-1])
while que:
x = que.popleft()
for y in G[x]:
if dist2[y]>=INFTY:
dist2[y] = dist2[x]+1
que.append(y)
dist3 = [INFTY]*(N+1)
dist3[N] = 0
que = deque([N])
while que:
x = que.popleft()
for y in G[x]:
if dist3[y]>=INFTY:
dist3[y] = dist3[x]+1
que.append(y)
ans = dist1[N-1]+dist2[N]+dist3[1]
ans = min(ans,dist1[N]+dist3[N-1]+dist2[1])
if ans>=INFTY:
print(-1)
else:
print(ans)