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