Lịch học đẹp nhất
Xem dạng PDF📖 Bài giảng & lời giải: đây là Bài tập 3 trong bài giảng Bài 35: Sắp xếp topo, DAG trên blog Lập trình thuật toán – có lý thuyết, mô phỏng từng bước, gợi ý và code C++ / Python.
⚠️ Lưu ý: hãy đảm bảo em đã thật sự cố gắng tự làm bài trước, rồi mới xem gợi ý và lời giải nhé!
🎓 Khóa học Lập trình Thuật toán thi đấu của thầy Nguyễn Việt Nam Sơn – 111 buổi video, kèm cặp cá nhân, luyện thi chuyên Tin · HSG Tin học · Tin học trẻ · đội tuyển quốc gia · Olympic/ICPC. 👉 Xem chi tiết khóa học · Thành tích học viên
📞 Đăng ký học: Zalo 0767 666 702 · Facebook Nguyễn Việt Nam Sơn · 🌐 laptrinhthuattoan.blogspot.com
Có $n$ môn học đánh số từ $1$ tới $n$ và $m$ điều kiện, điều kiện thứ $i$ có dạng "phải học môn $u_i$ trước môn $v_i$". Mỗi ngày học đúng một môn, mỗi môn học đúng một ngày. Một lịch học là một hoán vị của $1, 2, \ldots, n$ (thứ tự các môn được học) thoả mãn mọi điều kiện.
Trong mọi lịch học hợp lệ, hãy in ra lịch nhỏ nhất theo thứ tự từ điển (so sánh hai lịch theo môn học ngày thứ nhất, nếu bằng nhau thì so ngày thứ hai, …). Nếu không có lịch hợp lệ nào, in $-1$.
Dữ liệu vào
- Dòng 1: hai số nguyên $n, m$ ($1 \le n \le 2 \cdot 10^5$, $0 \le m \le 2 \cdot 10^5$).
- $m$ dòng tiếp theo, mỗi dòng gồm hai số nguyên $u, v$ ($1 \le u, v \le n$, $u \ne v$). Các điều kiện có thể lặp lại.
Kết quả
In $n$ số nguyên cách nhau một dấu cách là lịch học tìm được, hoặc in $-1$ nếu không có lịch hợp lệ.
Sample Input
5 4
5 2
3 4
5 1
4 1
Sample Output
3 4 5 1 2
Bình luận