Khóa học trực tuyến
Đề bài
Mô tả
Có khóa học trực tuyến, đánh số từ đến . Bạn cần hoàn thành khóa học chính để được cấp chứng chỉ.
Mỗi khóa học có thể có một danh sách các khóa học tiên quyết: muốn học khóa thì trước đó phải hoàn thành tất cả các khóa trong danh sách tiên quyết của (danh sách có thể rỗng).
Bạn học các khóa học lần lượt từng khóa một, không học song song, và mỗi khóa chỉ được học đúng một lần. Hãy tìm cách hoàn thành tất cả các khóa chính (cùng mọi khóa tiên quyết cần thiết) sao cho tổng số khóa học phải học là ít nhất, và in ra thứ tự học các khóa đó.
Nếu không thể lấy được chứng chỉ (do các ràng buộc tiên quyết tạo thành vòng lặp không thể thỏa mãn) thì in ra .
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và : số khóa học và số khóa học chính.
- Dòng thứ hai chứa số nguyên phân biệt trong khoảng từ đến : chỉ số các khóa học chính.
- dòng tiếp theo mô tả từng khóa học: dòng thứ bắt đầu bằng số nguyên (số khóa tiên quyết của khóa ), theo sau là số nguyên phân biệt trong khoảng từ đến , là chỉ số các khóa tiên quyết của khóa .
Không khóa học nào phụ thuộc vào chính nó.
Dữ liệu ra
- Nếu không thể lấy được chứng chỉ, in ra .
- Ngược lại, dòng đầu in ra số nguyên : số khóa học tối thiểu cần học. Dòng thứ hai in ra số nguyên phân biệt: chỉ số các khóa học theo đúng thứ tự học. Nếu có nhiều đáp án, in ra một đáp án bất kỳ.
Ràng buộc
- Tổng các giá trị không vượt quá .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 6 2 5 3 0 0 0 2 2 1 1 4 1 5 |
5 2 1 4 5 3 |
Khóa chính là 5 và 3. Để học khóa 5 cần khóa 4, để học khóa 4 cần khóa 2 và 1. Vậy phải học 5 khóa: 1, 2, 4, 5, 3. Một thứ tự hợp lệ là 2 1 4 5 3. Khóa 6 không cần thiết nên bỏ qua. |
| 9 3 3 9 5 0 0 3 9 4 5 0 0 1 8 1 6 1 2 2 1 2 |
6 1 2 9 4 5 3 |
Các khóa chính 3, 9, 5 kéo theo các khóa tiên quyết 4, 1, 2. Tổng cộng 6 khóa. |
| 3 3 1 2 3 1 2 1 3 1 1 |
-1 | Khóa 1 cần 2, khóa 2 cần 3, khóa 3 cần 1: tạo thành vòng lặp nên không thể học được. |
Bình luận