結果

問題 No.3263 違法な散歩道
ユーザー AP25
提出日時 2025-09-06 14:31:42
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 344 ms / 2,000 ms
コード長 1,017 bytes
コンパイル時間 212 ms
コンパイル使用メモリ 82,412 KB
実行使用メモリ 109,092 KB
最終ジャッジ日時 2025-09-06 14:31:52
合計ジャッジ時間 7,600 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 28
権限があれば一括ダウンロードができます

ソースコード

diff #

from collections import deque

import sys
sys.setrecursionlimit(10 ** 9)
#import pypyjit
#pypyjit.set_param('max_unroll_recursion=-1')

N, M = map(int, input().split())
G = [[] for _ in range(N)]
for _ in range(M):
    a,b = map(int, input().split())
    a -= 1
    b -= 1
    G[a].append(b)
    G[b].append(a)
K = int(input())
if K != 0:
    A = set(a-1 for a in map(int, input().split()))

inf = float("inf")
v = [[inf] * N for _ in range(5)]
dq = deque()

if K != 0 and 0 in A:
    v[1][0] = 0
    dq.append((0,1))
else:
    v[0][0] = 0
    dq.append((0,0))

while dq:
    x, iwai = dq.popleft()
    for nx in G[x]:
        if K != 0 and nx in A:
            niwai = iwai + 1
        else:
            niwai = 0

        if niwai < 5 and v[niwai][nx] == inf:
            v[niwai][nx] = v[iwai][x] + 1
            dq.append((nx,niwai))

ans = inf
for i in range(5):
    ans = min(ans,v[i][N-1])

print(-1 if ans == inf else ans)

#for e in v:
#    print(e)




0