Codeforces Educational 2F - Edge coloring of bipartite graph

Xem dạng PDF

Gửi bài giải


Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Người đăng:
Nguồn bài:
Codeforces Educational Round 2
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Cho một đồ thị hai phía vô hướng và không có cạnh trùng. Hãy tô màu các cạnh của đồ thị với số lượng màu tối thiểu, sao cho hai cạnh kề nhau được tô bằng hai màu khác nhau.

Input

Dòng đầu tiên gồm ba số nguyên ~a, b~ và ~m~ ~(1 \le a, b \le 1000, 0 \le m \le 10^5)~ với ~a~ là số đỉnh của phần thứ nhất, ~b~ là số đỉnh của phần thứ hai, và ~m~ là số cạnh trong đồ thị.

~m~ dòng tiếp theo, mỗi dòng gồm hai số nguyên ~x~ và ~y~ ~(1 \le x \le a, 1 \le y \le b)~ thể hiện một cạnh trong đồ thị với ~x~ là thứ tự của đỉnh trong phần thứ nhất, và ~y~ là thứ tự của đỉnh trong phần thứ hai. Đảm bảo đồ thị sẽ không có cạnh trùng.

Output

Dòng đầu tiên in ra một số nguyên ~c~ là số lượng màu tối thiểu cần.

Dòng thứ hai in ra ~m~ số nguyên trong khoảng ~[1, c]~ là màu của các cạnh theo thứ tự input đã cho.

Nếu có nhiều đáp án, hãy in ra một trong số chúng.

Sample

Input
4 3 5
1 2
2 2
3 2
4 1
4 3
Output
3
1 2 3 1 2
Giải thích

Một cách tô màu là như sau:

img

với màu vàng là ~1~, màu xanh lá là ~2~, và màu đỏ là ~3~.


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.