Trường có \(n\) môn học, đánh số từ \(1\) đến \(n\). Có \(m\) điều kiện tiên quyết, mỗi điều kiện có dạng \(u\ v\): môn \(u\) phải được học trước môn \(v\).
Bạn An muốn học hết \(n\) môn, mỗi lần học một môn, sao cho mọi điều kiện đều được thỏa mãn. Nếu có nhiều thứ tự hợp lệ, An chọn thứ tự nhỏ nhất theo thứ tự từ điển (so sánh môn đầu tiên, bằng nhau thì so môn thứ hai, ...).
Hãy in thứ tự học của An, hoặc in \(-1\) nếu không có thứ tự nào hợp lệ.
Input
- Dòng đầu chứa 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 chứa hai số nguyên \(u, v\) (\(1 \le u, v \le n\), \(u \ne v\)). Một điều kiện có thể xuất hiện nhiều lần.
Output
- Nếu có thứ tự hợp lệ, in \(n\) số trên một dòng là thứ tự học các môn, cách nhau một dấu cách.
- Ngược lại in \(-1\).
Scoring
- Có \(50\%\) số test với \(n, m \le 1000\).
Sample Input 1
5 4
1 3
2 3
3 4
5 4
Sample Output 1
1 2 3 5 4
Sample Input 2
3 3
1 2
2 3
3 1
Sample Output 2
-1
Notes
Ví dụ 1: lúc đầu các môn học được ngay là \(1, 2, 5\); chọn môn nhỏ nhất là \(1\), rồi \(2\). Sau khi học \(1, 2\) thì môn \(3\) học được; trong \(\{3, 5\}\) chọn \(3\). Cuối cùng là \(5\) rồi \(4\).
Ví dụ 2: môn \(1\) cần học trước môn \(2\), môn \(2\) trước môn \(3\), môn \(3\) lại trước môn \(1\) — không thể sắp xếp.
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.