結果
問題 |
No.3263 違法な散歩道
|
ユーザー |
|
提出日時 | 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 |
ソースコード
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)