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