Đồ Thị Ba Phần Đầy Đủ
Đề bài
Mô tả
Cho một đồ thị vô hướng đơn có đỉnh và cạnh. Đồ thị không chứa khuyên, giữa mỗi cặp đỉnh có nhiều nhất một cạnh, và có thể không liên thông.
Hãy chia đỉnh thành ba tập không rỗng (mỗi đỉnh thuộc đúng một tập) sao cho đồng thời:
- Không có cạnh nào mà cả hai đầu mút cùng nằm trong một tập.
- Với mọi cặp đỉnh ở hai tập khác nhau, tồn tại cạnh nối và .
Nói cách khác, đồ thị đã cho phải trùng khớp với một đồ thị ba phần đầy đủ nếu chọn được ba tập như trên.
Nếu tồn tại cách chia, in ra một cách bất kỳ. Nếu không, in ra .
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 () mô tả một cạnh.
Dữ liệu ra
- Nếu tồn tại cách chia hợp lệ, in ra số nguyên, số thứ là chỉ số tập (, hoặc ) mà đỉnh thuộc về. Nếu có nhiều đáp án, in ra một đáp án bất kỳ.
- Nếu không tồn tại, in ra .
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 6 11 1 2 1 3 1 4 1 5 1 6 2 4 2 5 2 6 3 4 3 5 3 6 |
3 2 2 1 1 1 | Đỉnh 1 đứng riêng, đỉnh 2 và 3 cùng một tập (chúng không kề nhau và có cùng danh sách kề), đỉnh 4, 5, 6 cùng một tập. Ba tập tương ứng ; mọi cạnh nối hai đỉnh khác tập, không có cạnh trong cùng tập. Đây là bài toán "any valid partition" — mọi cách hoán vị nhãn 3 tập đều được chấp nhận. |
| 4 6 1 2 1 3 1 4 2 3 2 4 3 4 |
-1 | Đồ thị là (đầy đủ 4 đỉnh). Trong bất kỳ cách chia nào cũng có ít nhất một tập chứa từ hai đỉnh trở lên, và cạnh giữa hai đỉnh này nằm trong cùng tập, mâu thuẫn với điều kiện. |
| 3 0 | -1 | Cần ba tập không rỗng, mỗi tập một đỉnh, nhưng khi đó cạnh giữa hai đỉnh bất kỳ đều thiếu. |
Bình luận