6970.Nearest Shops

Time Limit: 1s Memory Limit: 512MB

There are $n$ cities and $m$ roads. Each road is bidirectional and connects two cities. It is also known that $k$ cities have an anime shop.

If you live in a city, you of course know the local anime shop well if there is one. You would like to find the nearest anime shop that is not in your city.

For each city, determine the minimum distance to another city that has an anime shop.

Input Format(From the terminal/stdin)

The first line has three integers $n$ , $m$ and $k$ : the number of cities, roads and anime shops. The cities are numbered $1,2,\dots,n$ .

The next line contains $k$ integers: the cities that have an anime shop.

Finally, there are $m$ lines that describe the roads. Each line has two integers $a$ and $b$ : there is a road between cities $a$ and $b$ .

  • $1 \le k \le n \le 10^5$
  • $0 \le m \le 2 \cdot 10^5$

Output Format(To the terminal/stdout)

Print $n$ integers: for each city, the minimum distance to another city with an anime shop. If there is no such city, print $-1$ instead.

Sample Input

Copy
9 6 4
2 4 5 7
1 2
1 3
1 8
2 4
3 4
5 6
 · · \n
 · · · \n
 · \n
 · \n
 · \n
 · \n
 · \n
 · \n

Sample Output

Copy
1 1 1 1 -1 1 -1 2 -1
 · · · ·  · ·  · ·  \n
Source: CSES, Advanced Graph Problems, 3303

Submit

请先 登录

© 2025 FAQs