Gửi bài giải
Điểm:
1,33 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
512M
Input:
stdin
Output:
stdout
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch
Cho đồ thị ~G~ có hướng ~N~ đỉnh ~M~ cạnh.
Một đỉnh ~X~ được gọi là "truy cập" được ~Y~ nếu có đường đi từ ~X~ đến ~Y~.
Đỉnh ~X~ được gọi là "phổ biến" nếu tất cả các đỉnh ~Y~ trong đồ thị thỏa mãn ~1~ trong ~2~ điều kiện:
- ~X~ truy cập được ~Y~.
- ~Y~ truy cập được ~X~.
Yêu cầu: Cho đồ thị ~G~, đếm số lượng đỉnh phổ biến.
Input
- Dòng đầu gồm ~2~ số ~N~, ~M~ ~(1 \leq N \leq 150000~; ~1 \leq M \leq 300000)~.
- ~M~ dòng tiếp theo, mỗi dòng chứa ~2~ số ~x~ và ~y~, thể hiện có cạnh nối từ ~x~ đến ~y~.
Output
- Dòng đầu in số lượng đỉnh phổ biến.
- Dòng tiếp theo in chỉ số của các đỉnh phổ biến theo thứ tự tăng dần.
Sample Input
5 4
1 2
3 2
2 4
4 5
Sample Output
3
2 4 5
Bình luận