Điểm:
100 (p)
Thời gian:
1.0s
Bộ nhớ:
256M
Input:
bàn phím
Output:
màn hình
Đất nước U có \(n\) thành phố, đánh số từ \(1\) đến \(n\). Các thành phố được nối với nhau bởi hệ thống giao thông gồm \(m\) tuyến đường hai chiều, mỗi tuyến đường nối trực tiếp một cặp thành phố, đảm bảo luôn có đường đi giữa hai thành phố bất kì (trực tiếp hoặc qua các thành phố khác). Giữa hai thành phố bất kì không có quá một tuyến đường nối trực tiếp.
Có tổng cộng \(b\) kho lương thực, mỗi kho nằm ở một thành phố khác nhau. Thủ tướng U chọn ra \(r\) thành phố khác nhau để đặt trại quân sự.
Yêu cầu: Với mỗi thành phố đặt trại quân sự, tính số tuyến đường ít nhất cần đi để đến bất kỳ kho lương thực.
Input
- Dòng thứ nhất gồm bốn số nguyên: \(n, m, b, r\) \(\;(2 \le n \le 5\cdot10^5;\; 1 \le m \le 5\cdot10^5;\; 1 \le b, r \le n)\).
- Dòng thứ hai gồm \(b\) số nguyên — chỉ số các thành phố có kho lương thực.
- Dòng thứ ba gồm \(r\) số nguyên — chỉ số các thành phố có trại quân sự.
- \(m\) dòng tiếp theo, mỗi dòng gồm hai số nguyên \(u, v\) thể hiện có một tuyến đường hai chiều nối trực tiếp hai thành phố \(u\) và \(v\).
Output
- In ra \(r\) số nguyên trên một dòng, là kết quả tương ứng với các thành phố đặt trại quân sự theo đúng thứ tự xuất hiện trong dữ liệu vào.
Subtask
- Subtask 1 (40% số test): \(n \le 5000\).
- Subtask 2 (60% số test): Không có ràng buộc gì thêm
Example
Test
Input
6 6 2 3
3 2
1 5 4
1 2
1 6
3 6
2 3
4 5
3 4
Output
1 2 1
Bình luận