Lập lịch ưu tiên từ điển
Xem dưới dạng PDF
Gửi bài giải
Điểm:
20
Giới hạn thời gian:
1.5s
Giới hạn bộ nhớ:
256M
đầu vào:
stdin
Đầu ra:
stdout
Tác giả:
Kiểu bài tập
An có \(N\) nhiệm vụ cần hoàn thành (được đánh số từ \(1\) đến \(N\)). Có \(M\) ràng buộc dạng nhiệm vụ \(u\) phải làm trước \(v\).
Để lập kế hoạch chi tiết khoa học nhất, trong số các trình tự làm việc hợp lệ, An muốn chọn trình tự có thứ tự từ điển nhỏ nhất.
Định dạng đầu vào
- Dòng đầu chứa hai số nguyên \(N\) và \(M\) (\(1 \le N \le 10^5\), \(0 \le M \le 2 \cdot 10^5\)).
- \(M\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(u, v\) (\(1 \le u, v \le N\)) mô tả nhiệm vụ \(u\) làm trước nhiệm vụ \(v\).
Định dạng đầu ra
- Thứ tự thực hiện các nhiệm vụ có thứ tự từ điển nhỏ nhất. Nếu không thể hoàn thành toàn bộ, in ra \(-1\).
Ràng buộc
| Subtask | Tỉ lệ điểm | Ràng buộc |
|---|---|---|
| 1 | 40% | \(N \le 1000\), \(M \le 2000\) |
| 2 | 60% | Không có ràng buộc gì thêm |
Ví dụ
Input:
4 3
2 4
1 4
3 2
Output:
1 3 2 4
(Giải thích ví dụ: Cả hai thứ tự [3, 1, 2, 4] và [1, 3, 2, 4] đều hợp lệ, nhưng [1, 3, 2, 4] có thứ tự từ điển nhỏ nhất).
Nhận xét