Codecamp là một hoạt động không thể thiếu của các coder tại IUH, đó là dịp mà các bạn sẽ tách khỏi trường, đi đến một nơi thật xa, và chỉ để code. Có lần thì đi Đà Lạt ngắm hoàng hôn, có lần đi Vũng Tàu bắt cá, hoặc lên Măng Đen ngắm suối chảy róc rách, ... Và trong một chuyến codecamp như thế của CLB H3.2, các thành viên thuê xe máy để đi tham quan các địa điểm. Có tất cả ~n~ địa điểm để thăm và giữa chúng có ~m~ con đường một chiều cho xe máy chạy qua được (nghĩa là có đường đi từ ~A~ đến ~B~ thì chưa chắc có đường từ ~B~ về ~A~), trong đó có ~k~ địa điểm có phục vụ ăn uống. Các coder của H3.2 muốn xen kẽ giữa chuyến đi chơi sẽ có các buổi ăn uống, thư giãn. Vì thế các coder muốn biết rằng từ mỗi địa điểm trong ~n~ địa điểm thì khoảng cách ngắn nhất đến một địa điểm ăn uống nào đó là bao nhiêu (khoảng cách ở đây là số con đường một chiều mà bạn ấy cần phải đi qua).

Input
Dòng đầu tiên gồm các số ~n,m,k~ cho biết số địa điểm, số đường đi và số địa điểm đặc biệt, trong đó ~2 \le n \le 10^5~, ~0 \le m \le 10^6~ (các đường đi có thể bị lặp lại) và ~0 \le k \le n.~ Dòng thứ hai gồm danh sách các địa điểm ăn uống, mỗi giá trị sẽ từ ~1~ đến ~n~, phân biệt nhau. Trong ~m~ dòng tiếp theo sẽ có các thông tin con đường đi giữa từ địa điểm ~u \to v~ nào đó với ~1 \le u \neq v \le n~.
Output
Một dòng duy nhất gồm ~n~ khoảng cách từ địa điểm ~1,2,...,n~ đến chỗ có thể ăn uống gần nhất.
Sample input 1
5 4 2
1 5
1 2
2 3
3 4
4 5
Sample output 1
0 3 2 1 0
Sample input 2
5 4 2
1 5
2 1
2 3
3 4
5 4
Sample output 2
0 1 -1 -1 0
Giải thích: trong VD1, ta thấy địa điểm ~1,5~ đã là đặc biệt nên không cần di chuyển gì, còn từ địa điểm ~2,3,4~ có thể đi đến địa điểm ~5~ với độ dài đường đi lần lượt là ~3,2,1;~ trong VD2, ta thấy tương tự trên nhưng địa điểm ~2~ đến được địa điểm ~1~ qua ~1~ bước, còn địa điểm ~3,4~ thì không đến được ~1~ hoặc ~5~ bằng cách nào cả.
Comments