CF187C Weak Memory

题目描述

Zart PMP 获得了哈尔滨中国 ICPC 世界总决赛的资格。在带队参观太阳岛公园的雪雕艺术展后,PMP 需要在大巴离开前赶回集合点。但是公园非常大,他不知道如何找到大巴。 公园有 $n$ 个编号为 $1$ 至 $n$ 的路口,一些路口之间通过 $m$ 条双向道路连接。在 $k$ 个路口上,有 ICPC 的志愿者正在为各队指路。志愿者的位置是固定且互不相同的。 当 PMP 向某个志愿者询问去大巴的路线时,志愿者会告诉他一整条路径。但是因为公园被冰雪覆盖,所有地方看起来几乎都一样,PMP 每次最多只能记住 $q$ 个路口(不包括他当前所站的位置)。他会告诉志愿者自己的记忆力不好,如果没有一条最多经过 $q$ 条道路可以直达大巴的路径,志愿者会引导他到另一位志愿者(当然,这位志愿者离他也不超过 $q$ 个路口)。志愿者们非常熟悉公园的路况,总是会告诉 PMP 最优路线,因此如果存在到达大巴的路线,PMP 一定能找到。 PMP 初始位于路口 $s$,大巴停在 $t$ 号路口。$s$ 号路口一定有一位志愿者。你的任务是找到最小的 $q$,保证 PMP 一定能够找到大巴的位置。

输入格式

第一行包含三个整数 $n,m,k$($2 \leq n \leq 10^5, 0 \leq m \leq 2\cdot10^5, 1 \leq k \leq n$)——路口数量、道路数量和志愿者数量。 第二行包含 $k$ 个互不相同的整数,分别表示有志愿者的路口编号,范围在 $1$ 到 $n$ 之间。 接下来 $m$ 行描述道路,第 $i$ 行包含两个整数 $u_i, v_i$($1 \leq u_i, v_i \leq n, u_i \neq v_i$),表示第 $i$ 条路连接两相异的路口。任意两路口之间最多只有一条道路。 输入的最后一行包含两个整数 $s, t$($1 \leq s, t \leq n, s \neq t$),分别表示 PMP 的初始位置和大巴的位置。并非总是可以从 $s$ 到达 $t$。 保证 $s$ 号路口一定有志愿者。

输出格式

输出一个整数,即使 PMP 一定能够找到大巴的最小 $q$ 值。如果 PMP 无法到达大巴,则输出 $-1$。

说明/提示

下图对应样例一,蓝色路口表示有志愿者。如果 PMP 走虚线所示路径,则 $q=3$ 时可以到达大巴: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF187C/c6f84f7d8e65e3d0b7f7fc6b41fb9b6c090dc4ed.png) 在第二个样例中,PMP 可以利用路口 6 作为中转,因此答案为 3。 由 ChatGPT 5 翻译