THHV 2025 - DX11 - 11 - Du lịch
Xem dạng PDFTrong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài
Gia đình Minh rất thích đi du lịch và khám phá những vùng đất mới. Hè năm nay, gia đình Minh đã quyết định đi du lịch đến một quốc gia xa lạ, nơi được mô tả với ~n~ thành phố và ~m~ con đường hai chiều kết nối các thành phố. Đất nước này nổi bật với hệ thống giao thông độc đáo, khi mỗi con đường đều có độ dài bằng nhau và bất kỳ thành phố nào cũng có thể đến được từ thành phố khác thông qua các con đường. Một hành trình từ thành phố ~a~ đến thành phố ~b~ được định nghĩa là một chuỗi các con đường mà khi bắt đầu từ thành phố ~a~ và lần lượt đi qua từng con đường trong chuỗi, ta sẽ đến được thành phố ~b~. Độ dài của hành trình được tính bằng số lượng con đường trong chuỗi đó.
Như thường lệ, gia đình Minh không quên tận hưởng sự sang trọng khi đặt phòng tại khách sạn đắt nhất ở một trong những thành phố. Nhưng sau khi dành nhiều thời gian tận hưởng khung cảnh ngoạn mục và lên kế hoạch hành trình, họ lại quên mất chính xác khách sạn nằm ở đâu. Điều này không khiến họ bớt hào hứng với kỳ nghỉ, mà trái lại, cả gia đình lại xem đây như một thử thách thú vị để cùng giải quyết. Gia đình Minh đã ghi lại thông tin về độ dài ngắn nhất từ khách sạn đến mỗi thành phố, nhưng họ cần sự trợ giúp của bạn để xác định chính xác những thành phố nào có thể là nơi khách sạn tọa lạc.
Với niềm đam mê du lịch, gia đình Minh chắc chắn không muốn bỏ lỡ bất kỳ cơ hội trải nghiệm thú vị nào trong hành trình này.
Yêu cầu: Hãy giúp họ giải quyết bài toán và bắt đầu chuyến phiêu lưu ngay!
Input
Dòng đầu tiên chứa hai số nguyên ~n, m~ ~(1 \le n \le 50 \cdot 10^3; n - 1 \le m \le 10^5)~ lần lượt là số lượng thành phố và số lượng con đường kết nối giữa chúng;
Trong ~m~ dòng tiếp theo, mỗi dòng chứa hai số nguyên dương ~u_i, v_i~ ~(u_i, v_i \le n; u_i \ne v_i)~ thể hiện có một con đường nối giữa thành phố ~u_i~ và ~v_i~. Giữa hai thành phố bất kỳ, không có nhiều hơn một con đường;
Dòng cuối cùng chứa ~n~ số nguyên - số thứ ~i~ là ~d_i~ là khoảng cách từ thành phố thứ ~i~ đến thành phố nơi khách sạn tọa lạc, hoặc ~d_i = -1~ nếu gia đình Minh không ghi lại khoảng cách đó ~(-1 \le d_i < n)~.
Output
Dòng đầu tiên ghi số lượng thành phố có thể là nơi khách sạn tọa lạc;
Dòng thứ hai ghi danh sách nhãn của các thành phố này theo thứ tự tăng dần.
Hai số ghi trên cùng một dòng được phân cách nhau bởi một dấu cách.
Scoring
| Subtask | Điểm | Ràng buộc |
|---|---|---|
| 1 | ~10\%~ | ~m + 1 = n \le 5000~ và ~u_i + 1 = v_i~ với mọi ~i~ |
| 2 | ~20\%~ | ~d_i = -1~ với mọi ~i > 1~ |
| 3 | ~30\%~ | ~n, m \le 5000~ |
| 4 | ~40\%~ | Không có ràng buộc gì thêm |
Sample Input 1
7 6
1 2
1 3
3 4
3 5
3 6
5 7
2 -1 -1 -1 -1 -1 3
Sample Output 1
2
4 6
Sample Input 2
4 3
1 2
2 3
3 4
1 -1 -1 1
Sample Output 2
0
Notes
Trong ví dụ 1, hành trình từ thành phố ~4~ đến thành phố ~1~ có độ dài là ~2~ và hành trình từ thành phố ~4~ đến thành phố ~7~ có độ dài là ~3~. Vì vậy, thành phố ~4~ thỏa mãn cả hai điều kiện và có thể là nơi khách sạn tọa lạc. Điều tương tự cũng đúng với thành phố ~6~.
Bình luận