結果
問題 | No.2565 はじめてのおつかい |
ユーザー | Koi |
提出日時 | 2023-12-02 14:50:43 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 469 ms / 2,000 ms |
コード長 | 676 bytes |
コンパイル時間 | 232 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 125,952 KB |
最終ジャッジ日時 | 2024-09-26 17:31:51 |
合計ジャッジ時間 | 13,539 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 50 |
ソースコード
from collections import defaultdict,deque N,M=map(int,input().split()) G=[[] for _ in range(4*N+1)] #Nで割った余りが #0 ->F,F #1 -> T,F #2 -> F,T #3 -> T,T for i in range(M): u,v=map(int,input().split()) G[u].append(v) G[N+u].append(N+v) G[2*N+u].append(2*N+v) G[3*N+u].append(3*N+v) G[N-1].append(N+N-1) G[2*N+N-1].append(3*N+N-1) G[N].append(2*N+N) G[N+N].append(2*N+N+N) dis=[-1 for _ in range(4*N+1)] que=deque([1]) seen=[False]*(4*N+1) seen[1]=True dis[1]=0 while len(que): p=que.popleft() for q in G[p]: if(not seen[q]): seen[q]=True dis[q]=dis[p]+1 que.append(q) print(max(dis[3*N+1]-2,-1))