結果
問題 | No.2565 はじめてのおつかい |
ユーザー | K5h1n0 |
提出日時 | 2023-12-02 16:29:53 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 278 ms / 2,000 ms |
コード長 | 889 bytes |
コンパイル時間 | 312 ms |
コンパイル使用メモリ | 81,920 KB |
実行使用メモリ | 98,412 KB |
最終ジャッジ日時 | 2024-09-26 20:22:04 |
合計ジャッジ時間 | 11,950 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 50 |
ソースコード
from collections import defaultdict,deque n,m = map(int,input().split()) d = defaultdict(list) for _ in range(m): a,b = map(int,input().split()) d[a].append(b) from1 = [float("INF")]*(n+1) fromnminus1 = [float("INF")]*(n+1) fromn = [float("INF")]*(n+1) def bfs(start,result): global d visited = [False]*(n+1) q = deque() visited[start] = True cnt = 0 q.append((start,cnt)) while q: nowv,nowcnt = q.popleft() result[nowv] = nowcnt for nextv in d[nowv]: if visited[nextv] == False: visited[nextv] = True q.append((nextv,nowcnt+1)) return result bfs(1,from1) bfs(n-1,fromnminus1) bfs(n,fromn) route1 = from1[n-1] + fromnminus1[n] + fromn[1] route2 = from1[n] + fromn[n-1] + fromnminus1[1] result = min(route1,route2) if result == float("inf"): print(-1) else: print(result)