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$ 时可以到达大巴:

在第二个样例中,PMP 可以利用路口 6 作为中转,因此答案为 3。
由 ChatGPT 5 翻译