Huấn luyện viên
Đề bài
Mô tả
Một huấn luyện viên lập trình có học sinh, trong đó chia hết cho . Các học sinh được đánh số từ tới .
Trước kỳ thi, huấn luyện viên muốn chia toàn bộ học sinh thành các đội, mỗi đội đúng người. Với một số cặp học sinh, ta biết rằng họ muốn được xếp chung đội. Quan hệ này là đối xứng: nếu học sinh muốn cùng đội với học sinh thì cũng muốn cùng đội với .
Huấn luyện viên muốn các điều kiện sau được thoả mãn cùng lúc:
- Mỗi học sinh thuộc đúng một đội.
- Mỗi đội gồm đúng học sinh.
- Nếu học sinh và muốn cùng đội thì họ phải nằm trong cùng một đội.
Hãy giúp huấn luyện viên tìm một cách chia phù hợp, hoặc thông báo rằng không tồn tại cách chia nào.
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và — số học sinh và số cặp mong muốn chung đội.
- dòng tiếp theo, mỗi dòng chứa hai số nguyên () — học sinh và muốn chung đội. Các cặp đôi một khác nhau.
Dữ liệu ra
- Nếu không tồn tại cách chia hợp lệ, in ra .
- Ngược lại, in ra dòng, mỗi dòng chứa ba số nguyên () là chỉ số ba học sinh thuộc đội thứ . Mỗi học sinh xuất hiện đúng một lần trên toàn bộ dòng. Nếu có nhiều cách chia, in ra cách bất kỳ.
Ràng buộc
- , chia hết cho .
- .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 0 | 1 2 3 | Không có ràng buộc nào, ba học sinh tự do tạo thành một đội. |
| 6 4 1 2 2 3 3 4 5 6 |
-1 | Các ràng buộc nối thành một thành phần học sinh, vượt quá kích thước đội cho phép. |
| 3 3 1 2 2 3 1 3 |
1 2 3 | Ba học sinh đều muốn chung đội, ghép thành một đội duy nhất. |
Bình luận