結果

問題 No.3263 違法な散歩道
ユーザー titia
提出日時 2025-09-16 04:22:43
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 300 ms / 2,000 ms
コード長 829 bytes
コンパイル時間 276 ms
コンパイル使用メモリ 82,324 KB
実行使用メモリ 102,168 KB
最終ジャッジ日時 2025-09-16 04:22:52
合計ジャッジ時間 7,595 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 28
権限があれば一括ダウンロードができます

ソースコード

diff #

from collections import deque

N,M=map(int,input().split())

E=[[] for i in range(N)]

for i in range(M):
    x,y=map(int,input().split())
    x-=1
    y-=1
    E[x].append(y)
    E[y].append(x)

K=int(input())
if K!=0:
    A=list(map(int,input().split()))
else:
    A=[]

X=[0]*N
for a in A:
    X[a-1]=1

DP=[[1<<60]*N for i in range(6)]

DP[0][0]=0

Q=[(0,0)]
Q=deque(Q)

while Q:
    now,iwi=Q.popleft()

    for to in E[now]:
        if X[to]==0:
            if DP[0][to]>DP[iwi][now]+1:
                DP[0][to]=DP[iwi][now]+1
                Q.append((to,0))
        else:
            if iwi+1<5 and DP[iwi+1][to]>DP[iwi][now]+1:
                DP[iwi+1][to]=DP[iwi][now]+1
                Q.append((to,iwi+1))

ANS=1<<60
for i in range(6):
    ANS=min(ANS,DP[i][N-1])

if ANS==1<<60:
    print(-1)
else:
    print(ANS)
0