結果

問題 No.3263 違法な散歩道
ユーザー i_taku
提出日時 2025-09-09 14:44:45
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 328 ms / 2,000 ms
コード長 804 bytes
コンパイル時間 416 ms
コンパイル使用メモリ 81,920 KB
実行使用メモリ 103,552 KB
最終ジャッジ日時 2025-09-09 14:44:55
合計ジャッジ時間 9,638 ms
ジャッジサーバーID
(参考情報)
judge2 / judge
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 28
権限があれば一括ダウンロードができます

ソースコード

diff #

from collections import deque


N, M = map(int, input().split())
g = [[] for _ in range(N)]
for _ in range(M):
    u, v = map(int, input().split())
    u, v = u - 1, v - 1
    g[u].append(v)
    g[v].append(u)
K = int(input())
ng = [False] * N
if K > 0:
    A = list(map(int, input().split()))
    for a in A:
        ng[a - 1] = True

LIMIT = 5
dist = [[-1] * N for _ in range(LIMIT + 1)]

dist[0][0] = 0
que = deque([(0, 0)])
while que:
    d, v = que.popleft()
    if d == LIMIT:
        continue
    for nv in g[v]:
        nd = d + 1 if ng[nv] else 0
        if dist[nd][nv] == -1:
            dist[nd][nv] = dist[d][v] + 1
            que.append((nd, nv))

ans = 1 << 60
for d in range(LIMIT):
    if dist[d][N - 1] != -1:
        ans = min(ans, dist[d][N - 1])
print(ans if ans != 1 << 60 else -1)
0