Nhãn nhỏ nhất
Đề bài
Mô tả
Cho một đồ thị có hướng không chu trình (DAG) gồm đỉnh và cạnh. Đồ thị không có khuyên và không có hai cạnh trùng nhau giữa cùng một cặp đỉnh. Đồ thị có thể không liên thông.
Bạn cần gán cho mỗi đỉnh một nhãn sao cho:
- Dãy nhãn là một hoán vị của (mỗi số nguyên từ đến xuất hiện đúng một lần).
- Nếu có cạnh đi từ đỉnh tới đỉnh thì nhãn của phải nhỏ hơn nhãn của .
- Trong tất cả các cách gán thoả mãn hai điều kiện trên, dãy nhãn (xét theo thứ tự đỉnh ) phải nhỏ nhất theo thứ tự từ điển.
Hãy tìm dãy nhãn thoả mãn tất cả các điều kiện.
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và .
- dòng tiếp theo, mỗi dòng chứa hai số nguyên và mô tả một cạnh có hướng từ tới .
Dữ liệu ra
In ra số: nhãn của đỉnh , đỉnh , ..., đỉnh , cách nhau bởi dấu cách.
Ràng buộc
- ,
- Đồ thị đã cho luôn là đồ thị có hướng không chu trình.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 3 1 2 1 3 3 2 |
1 3 2 | Các ràng buộc: nhãn(1) < nhãn(2), nhãn(1) < nhãn(3), nhãn(3) < nhãn(2). Cách gán 1 3 2 thoả mãn và nhỏ nhất theo thứ tự từ điển. |
| 4 5 3 1 4 1 2 3 3 4 2 4 |
4 1 2 3 | Đỉnh không có cạnh vào nên có thể nhận nhãn nhỏ. Thứ tự bắt buộc: , cho dãy nhãn nhỏ nhất theo thứ tự từ điển là 4 1 2 3. |
| 5 4 3 1 2 1 2 3 4 5 |
3 1 2 4 5 | Hai thành phần rời nhau. Ràng buộc và dẫn tới dãy nhãn 3 1 2 4 5. |
Bình luận