23.A2. CTDL> bài Lịch Học
Lịch Học
Trong một buổi thảo luận về triết học, FullHouse Dev đã đặt ra câu hỏi về trật tự và logic trong việc sắp xếp kiến thức. Họ nhận ra rằng việc học tập cũng giống như xây dựng một tòa nhà - cần phải có nền móng vững chắc trước khi xây các tầng cao hơn. Từ đó, họ quyết định áp dụng tư duy này vào việc sắp xếp một lịch học hợp lý.
Bài toán
FullHouse Dev cần hoàn thành \(n\) khóa học. Có \(m\) yêu cầu tiên quyết dạng "khóa học a phải được hoàn thành trước khóa học b". Nhiệm vụ là tìm ra một thứ tự để có thể hoàn thành tất cả các khóa học.
INPUT FORMAT:
- Dòng đầu tiên chứa hai số nguyên \(n\) và \(m\): số lượng khóa học và số lượng yêu cầu tiên quyết. Các khóa học được đánh số từ \(1,2,\dots,n\).
- \(m\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(a\) và \(b\): khóa học \(a\) phải được hoàn thành trước khóa học \(b\).
OUTPUT FORMAT:
- In ra một thứ tự có thể hoàn thành các khóa học. Bạn có thể in ra bất kỳ thứ tự hợp lệ nào miễn là bao gồm tất cả các khóa học.
- Nếu không có giải pháp, in ra "IMPOSSIBLE".
Ràng buộc:
- \(1 \leq n \leq 10^5\)
- \(1 \leq m \leq 2 \cdot 10^5\)
- \(1 \leq a,b \leq n\)
Ví dụ
INPUT
5 3
1 2
3 1
4 5
OUTPUT
3 4 1 5 2
Giải thích
Với thứ tự này:
- Khóa học 3 được học trước khóa học 1 (thỏa mãn yêu cầu)
- Khóa học 1 được học trước khóa học 2 (thỏa mãn yêu cầu)
- Khóa học 4 được học trước khóa học 5 (thỏa mãn yêu cầu) Vì vậy, đây là một thứ tự hợp lệ để hoàn thành tất cả các khóa học.
Comments