結果

問題 No.3263 違法な散歩道
ユーザー akazuki8
提出日時 2025-09-06 14:01:13
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 489 ms / 2,000 ms
コード長 635 bytes
コンパイル時間 487 ms
コンパイル使用メモリ 82,604 KB
実行使用メモリ 117,516 KB
最終ジャッジ日時 2025-09-06 14:01:29
合計ジャッジ時間 10,080 ms
ジャッジサーバーID
(参考情報)
judge / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 28
権限があれば一括ダウンロードができます

ソースコード

diff #

n,m=map(int,input().split())
a=[[]for i in range(n)]
for i in range(m):
	s,t=map(int,input().split())
	a[s-1].append(t-1)
	a[t-1].append(s-1)
k=int(input())
if k>0:
    b=set(map(int,input().split()))
else:
    b=set()
c=[[10**10 for _ in range(5)]for _ in range(n)]
c[0][0]=0
now={(0,0)}
while now:
	new=set()
	for i in now:
		for j in a[i[0]]:
			if j+1 in b:
				if i[1]!=4:
					if c[j][i[1]+1]==10**10:
						c[j][i[1]+1]=c[i[0]][i[1]]+1
						new.add((j,i[1]+1))
			else:
			    if c[j][0]==10**10:
			        c[j][0]=c[i[0]][i[1]]+1
			        new.add((j,0))
	now=new 
z=min(c[-1])
if z==10**10:
    print(-1)
else:
    print(z)
0