結果

問題 No.3263 違法な散歩道
ユーザー tkykwtnb
提出日時 2025-09-06 14:27:23
言語 PyPy3
(7.3.15)
結果
RE  
実行時間 -
コード長 850 bytes
コンパイル時間 361 ms
コンパイル使用メモリ 82,380 KB
実行使用メモリ 103,092 KB
最終ジャッジ日時 2025-09-06 14:27:35
合計ジャッジ時間 8,723 ms
ジャッジサーバーID
(参考情報)
judge / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other RE * 28
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
sys.setrecursionlimit(10**5)
import pypyjit
pypyjit.set_param('max_unroll_recursion=-1')
N,M=map(int,input().split())
G=[[] for _ in range(N+1)]
for _ in range(M):
    U,V=map(int,input().split())
    G[U].append(V)
    G[V].append(U)
K=int(input())
A=set()
if K:A=set(map(int,input().split()))

ans=1<<30
def dfs(now,step,cnt,used:set,branch:list):
    global ans
    if now==N:
        ans=min(ans,step)
        return
    if now not in A:
        cnt=0
        for i in branch:
            used.remove(i)
    if len(G[now])>=3:branch.append(now)
    for nxt in G[now]:
        if nxt in used:continue
        if nxt in A:
            if cnt==4:return
            else:dfs(nxt,step+1,cnt+1,used|{nxt},branch[:])
        else:
            dfs(nxt,step+1,cnt,used|{nxt},branch[:])
dfs(1,0,0,{1},[])
if ans==1<<30:print(-1)
else:print(ans)
0