AT_past202012_i 避難計画
题目描述
一张无向图有 $n$ 个点(编号 $1$ 到 $n$)和 $m$ 条边。每个点都有一个高度 $h_i$。每条边都是有向边,从较高的点连向较低的点,长度为 $1$。
在这些点中,有 $k$ 个点有特殊标记,其中的第 $i$ 个点编号为 $c_i$。
对于每个点,请求出从该点顺着有向边到一个有特殊标记的点的最短路长度。(原地不动也是可以的)
输入格式
第一行输入三个整数 $n,m,k$。
第二行输入 $n$ 个整数,表示数列 $h$。
第三行输入 $k$ 个整数,表示数列 $c$。
剩余 $m$ 行,每行输入两个整数 $a_i,b_i$,表示第 $i$ 条边连接的两个点。(方向自己找)
输出格式
输出 $n$ 行,第 $i$ 行输出内容如下:
- 若可以到达有标记的点,请输出最短路长度;
- 否则,输出`-1`。
说明/提示
#### 数据规模与约定
对于 $100\%$ 的测试数据,保证:
- $2 \le n \le 2 \times 10^5$,$1 \le m \le 2 \times 10^5$,$1 \le k \le n$;
- $1 \le h_i \le 10^9$,且 $h_i$ 两两不同;
- $1 \le c_i \le n$,且 $c_i$ 两两不同;
- $1 \le a_i,b_i \le n$,给出的图没有重边(含相反方向)和自环。