Xây dựng căn nhà

Xem dưới dạng PDF

Gửi bài giải


Điểm: 10
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

Bình đang làm kỹ sư thiết kế quy trình xây dựng một ngôi nhà gồm \(N\) giai đoạn thi công tuần tự (được đánh số từ \(1\) đến \(N\)). Có một số ràng buộc kỹ thuật buộc giai đoạn \(u\) phải hoàn thành trước giai đoạn \(v\).

Hãy kiểm tra xem quy trình thi công thiết kế của Bình có khả thi và không bị phụ thuộc vòng tròn hay không. Nếu có, hãy in ra \(YES\) kèm theo một trình tự thi công. Nếu không, in ra \(NO\).

Đị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ả rằng giai đoạn \(u\) phải thi công trước \(v\).

Định dạng đầu ra

  • Dòng đầu tiên: In ra \(YES\) hoặc \(NO\).
  • Dòng thứ hai (nếu là \(YES\)): In ra dãy \(N\) số nguyên là trình tự thi công.

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:

3 3
1 2
2 3
3 1

Output:

NO

Nhận xét

Không có ý kiến tại thời điểm này.