Module: BFS - 广度行走


Problem

6 /6


疏散

Problem

我们不允许透露其名称的绝密组织之一是一个由 N 地下掩体组成的网络,这些掩体由等长的隧道连接,通过这些隧道可以从任何掩体到达任何其他掩体(不一定直接)。与外界的联系是通过位于一些掩体中的特殊秘密出口进行的。

该组织需要制定紧急情况下的员工疏散计划。为此,对于每个掩体,您需要了解到达最近的出口需要多长时间。作为此类任务的专家,您需要根据最高机密组织场所的给定描述来计算每个掩体所需的时间。为了您的方便,地堡的编号从 1N

输入: 
- 前两行包含两个自然数 N, K (\(1 <= N <= 100000\) , \(1 <= K <= N\)) —分别是掩体数量和出口数量;
- 第三行,1N用空格分隔K不同的数字,表示出口所在的掩体编号;
- 第四行包含数字 M (\(1 <= M <= 100000\)) —隧道数量;
- 在下面的M 行输入数字对 -由隧道连接的掩体数量。
每个隧道都可以在两个方向上移动。一个组织没有从地堡通往自身的隧道,但一对地堡之间可以有多个隧道。

输出: 打印 N 空格分隔的数字 —对于每个掩体,到达出口所需的最短时间。假设通过一条隧道的时间是1
 

 

例子
<头> <日># <正文>
输入 输出
1 3
1

3
1 2
3 1
2 3
1 0 1
2 10
2
10 8 
9
67
75
58
8 1
1 10
10 3
34
49
9 2
1 4 1 2 1 3 2 0 3 0