THHV 2025 - DX11 - 11 - Du lịch

Xem dạng PDF

Gửi bài giải

Điểm: 90,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Trong 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

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.