PreVOI 2026 - Contest 2 - Giao lộ
Xem dạng PDF
Gửi bài giải
Điểm:
70,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
Thành phố của Tuấn gồm ~N~ giao lộ (đánh số từ ~1~ đến ~N~) được nối bởi ~M~ con đường hai chiều, tất cả đều có cùng độ dài. Con đường thứ ~i~ nối hai giao lộ ~u_i~ và ~v_i~. Bảo đảm rằng có thể di chuyển giữa mọi cặp giao lộ bằng một dãy các con đường.
Một số giao lộ có đặt đèn hiệu. Khi bật GPS, đồng hồ sẽ hiển thị, đối với mỗi đèn hiệu, độ dài đường đi ngắn nhất từ giao lộ bạn đang đứng đến giao lộ chứa đèn hiệu đó.
Yêu cầu: Hãy xác định những giao lộ mà Tuấn có thể đang đứng.
Input
- Dòng đầu chứa hai số nguyên ~N, M~ là số giao lộ và số con đường.
- Dòng thứ ~i~ trong số ~M~ dòng tiếp theo chứa hai số nguyên ~u_i, v_i~ cho biết có một con đường hai chiều nối ~u_i~ và ~v_i~.
- Dòng cuối chứa ~N~ số nguyên ~d_1, d_2, \dots, d_N~. Số ~d_i~ là khoảng cách từ vị trí hiện tại của Tuấn đến giao lộ ~i~ nếu giao lộ ~i~ có đèn hiệu, và bằng ~-1~ nếu giao lộ ~i~ không có đèn hiệu.
Output
- Dòng đầu in ra số lượng giao lộ mà Tuấn có thể đang đứng.
- Dòng thứ hai in ra các số hiệu giao lộ đó theo bất kỳ thứ tự nào.
Ràng buộc
- ~1 \le N \le 5 \times 10^4~.
- ~N - 1 \le M \le 10^5~.
- ~-1 \le d_i \le N~ với mọi ~i~.
Sample Input 1
5 4
1 2
2 3
3 4
4 5
-1 -1 1 -1 -1
Sample Output 1
2
2 4
Bình luận