Lập lịch công việc

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

An cần hoàn thành \(N\) công việc (được đánh số từ \(1\) đến \(N\)). Một số công việc có mối quan hệ phụ thuộc lẫn nhau, tức là công việc \(u\) phải hoàn thành trước công việc \(v\).

Hãy giúp An xác định một thứ tự thực hiện các công việc hợp lệ sao cho mỗi công việc chỉ được thực hiện sau khi tất cả các công việc tiên quyết của nó đã hoàn tất.

Đị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 công việc \(u\) phải làm trước công việc \(v\).

Định dạng đầu ra

  • In ra một dòng chứa \(N\) số nguyên là một thứ tự thực hiện các công việc. Nếu không tồn tại thứ tự hợp lệ (do có phụ thuộc vòng), in ra \(-1\).

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:

4 4
1 2
1 3
2 4
3 4

Output:

1 2 3 4

(Chú ý: 1 3 2 4 cũng là một kết quả hợp lệ).


Nhận xét

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