Thu tu topo
Xem dưới dạng PDF
Gửi bài giải
Điểm:
10
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
đầu vào:
stdin
Đầu ra:
stdout
Tác giả:
Kiểu bài tập
Cho một đồ thị có hướng với N đỉnh (đánh số từ 1) và M cạnh. Hãy tìm một thứ tự topo (topological order) của đồ thị.
Thứ tự topo là một thứ tự các đỉnh sao cho với mọi cạnh có hướng u → v, đỉnh u đứng trước đỉnh v.
Sử dụng thuật toán Kahn dựa trên queue: tính bậc vào (in-degree) của mỗi đỉnh, đưa các đỉnh có bậc vào bằng 0 vào queue, lần lượt lấy ra và giảm bậc vào của các đỉnh kề.
Đầu vào
- Dòng đầu tiên chứa hai số nguyên N (1 ≤ N ≤ 10^5) và M (1 ≤ M ≤ 10^5).
- M dòng tiếp theo, mỗi dòng chứa hai số nguyên u, v (1 ≤ u, v ≤ N) — cạnh có hướng từ u đến v.
Đầu ra
In ra thứ tự topo dưới dạng N số nguyên cách nhau bởi khoảng trắng. Nếu đồ thị có chu trình (không thể xếp thứ tự topo), in ra CYCLE.
Ví dụ
Input:
6 6
1 2
2 3
1 4
4 5
5 3
6 5
Output:
1 6 2 4 3 5
Nhận xét