結果

問題 No.3263 違法な散歩道
ユーザー Nikkuniku029
提出日時 2025-09-15 16:04:49
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 328 ms / 2,000 ms
コード長 926 bytes
コンパイル時間 303 ms
コンパイル使用メモリ 82,684 KB
実行使用メモリ 107,524 KB
最終ジャッジ日時 2025-09-15 16:04:59
合計ジャッジ時間 9,719 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 28
権限があれば一括ダウンロードができます

ソースコード

diff #

from collections import deque

N, M = map(int, input().split())
Edge = [[] for _ in range(N)]
for _ in range(M):
    u, v = map(int, input().split())
    u -= 1
    v -= 1
    Edge[u].append(v)
    Edge[v].append(u)
K = int(input())
if K > 0:
    A = set(list(map(int, input().split())))
else:
    A = set()
dist = [[-1] * N for _ in range(5)]
dist[0][0] = 0
q = deque([(0, 0)])
while q:
    k, v = q.popleft()
    for to in Edge[v]:
        if to + 1 in A:
            if 0 <= k <= 3:
                if dist[k + 1][to] != -1:
                    continue
                dist[k + 1][to] = dist[k][v] + 1
                q.append((k + 1, to))
        else:
            if dist[0][to] != -1:
                continue
            dist[0][to] = dist[k][v] + 1
            q.append((0, to))
ans = 1 << 60
for k in range(5):
    if dist[k][-1] != -1:
        ans = min(ans, dist[k][-1])
if ans == 1 << 60:
    ans = -1
print(ans)
0