結果

問題 No.2565 はじめてのおつかい
ユーザー るこーそー
提出日時 2024-09-25 10:45:11
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 235 ms / 2,000 ms
コード長 819 bytes
コンパイル時間 462 ms
コンパイル使用メモリ 82,468 KB
実行使用メモリ 97,920 KB
最終ジャッジ日時 2024-09-25 10:45:24
合計ジャッジ時間 11,334 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 50
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
sys.setrecursionlimit(10**5)
input=sys.stdin.readline
import pypyjit
pypyjit.set_param('max_unroll_recursion=-1')

from collections import deque
def bfs(v):
    que=deque();que.append(v)
    dist=[-1]*n;dist[v]=0
    while que:
        v=que.popleft()
        for nv in graph[v]:
            if dist[nv]!=-1:continue    
            dist[nv]=dist[v]+1
            que.append(nv)
    
    dist=list(map(lambda x:x if x!=-1 else float('INF'),dist))
    return dist

n,m=map(int,input().split())
graph=[[] for _ in range(n)]
for _ in range(m):
    u,v=map(lambda x:int(x)-1,input().split())
    graph[u].append(v)

dist1=bfs(0)
distn_1=bfs(n-2)
distn=bfs(n-1)

ans=float('INF')
ans=min(ans,dist1[n-2]+distn_1[n-1]+distn[0])
ans=min(ans,dist1[n-1]+distn[n-2]+distn_1[0])

print(ans if ans!=float('INF') else -1)
0