[ITK22 Training] Duyệt Anh Khoa

Xem PDF

Nộp bài


Điểm: 15 (thành phần)
Thời gian: 1.5s
Bộ nhớ: 512M

Tác giả:
Dạng bài

Xét \(\pi=(\pi_1, \pi_2, \pi_3,..., \pi_N)\) là hoán vị của các số tự nhiên từ \(1\) đến \(N\). Cho \(M\) ràng buộc, ràng buộc thứ \(i\) có dạng "\(\pi_{X_i}\) phải có giá trị nhỏ hơn \(\pi_{Y_i}\)". Bạn hãy lập trình xác định xem liệu có tồn tại một hoán vị \(\pi\) duy nhất thỏa mãn tất cả \(M\) ràng buộc trên không.


Input

Dòng đầu chứa hai số nguyên dương \(N\) và \(M\). (\(2\leq N\leq 2\cdot 10^5\), \(1\leq M\leq 2\cdot 10^5\))

Dòng thứ \(i\) trong \(M\) dòng tiếp theo chứa hai số nguyên \(X_i\) và \(Y_i\) (\(1\leq X_i, Y_i\leq N\)).


Output

Dòng đầu in ra Yes nếu tồn tại duy nhất một hoán vị \(\pi\) thỏa mãn tất cả \(M\) ràng buộc đã cho. Ngược lại, nếu không tồn tại hoặc tồn tại nhiều hơn một hoán vị thỏa mãn, in ra No.

Nếu tồn tại duy nhất một hoán vị thỏa mãn, dòng tiếp theo in ra \(N\) số nguyên thể hiện giá trị của từng phần tử trong hoán vị.


Ví dụ

Sample input 1
3 2
3 1
2 3
Sample output 1
Yes
3 1 2
Sample input 2
3 2
3 1
3 2
Sample output 2
No
Sample input 3
4 6
1 2
1 2
2 3
2 3
3 4
3 4
Sample output 3
Yes
1 2 3 4