Đất nước Alpha có \(n\) thành phố được đá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 lại giữa hai thành phố bất kì trong nước (trực tiếp hoặc đi qua một số 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 được đặt trên khắp cả nước, mỗi kho nằm ở một thành phố khác nhau. Để bảo vệ đất nước khỏi quân xâm lược, Thủ tướng Alpha Beta đã chọn ra \(r\) thành phố khác nhau để đặt trại quân sự.
Yêu cầu: Để giải quyết vấn đề lương thực cho quân doanh, với mỗi thành phố được đặt trại quân sự, nhiệm vụ của bạn là tính toán số tuyến đường ít nhất cần đi nếu xuất phát từ thành phố đó đến một kho lương thực bất kì.
Dữ liệu vào:
+ Dòng thứ nhất gồm bốn số nguyên: \(n,\ m,\ b,\ r\ \left( 2 \leq n \leq \ 5.10^{5};\ 1 \leq m \leq 5.10^{5};1 \leq b,\ r \leq \ n \right);\)
+ Dòng thứ hai gồm \(b\) số nguyên là chỉ số của các thành phố được đặt kho lương thực;
+ Dòng thứ ba gồm \(r\) số nguyên là chỉ số của các thành phố được đặt trại quân sự;
+ \(m\) dòng tiếp theo, mỗi dòng gồm hai số nguyên \(u\) và \(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\).
Kết quả:
+ Ghi \(r\) số nguyên trên cùng một dòng là kết quả tính được của các thành phố được đặt trại quân sự theo thứ tự của dữ liệu.
Ví dụ:
Input | Output |
---|---|
6 6 2 3 3 2 1 5 4 1 2 1 6 3 6 2 3 4 5 3 4 | 1 2 1 |
Giải thích:
+ Thành phố 1: 1 → 2
+ Thành phố 4: 4 → 3
+ Thành phố 5: 5 → 4 → 3
Ràng buộc:
+ Subtask 1: (40% số test): \(2\ \leq \ n\ \leq \ 2000,\ 1\ \leq \ m\ \leq \ 2000\);
+ Subtask 2: (60% số test): Không có ràng buộc gì thêm.
Code tích cực |
---|
Trong 24h |
Trong 7 ngày |
|
Trong 30 ngày |
|
Thống kê |
---|
AC/Sub: 97887/180710 Pascal: 17121 C++: 130348 Python: 33199 Lượt xem/tải tests: 38905 |