CSES - Graph Coloring | Tô Màu Đồ Thị

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1800 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Cho một đồ thị đơn có \(n\) đỉnh và \(m\) cạnh. Nhiệm vụ của bạn là dùng số màu ít nhất có thể để tô màu mỗi đỉnh sao cho không có cạnh nào nối hai đỉnh cùng màu.

Input

Dòng đầu tiên chứa hai số nguyên \(n\)\(m\): số đỉnh và số cạnh. Các đỉnh được đánh số \(1, 2,\dots, n\).

Sau đó có \(m\) dòng mô tả các cạnh. Mỗi dòng chứa hai số nguyên \(a\)\(b\): có một cạnh nối hai đỉnh \(a\)\(b\).

Output

Đầu tiên, in ra một số nguyên \(k\): số màu nhỏ nhất.

Sau đó, in ra \(n\) số nguyên \(c_1, c_2,\dots, c_n\): màu của các đỉnh. Các màu phải thỏa mãn \(1 \le c_i \le k\).

Bạn có thể in ra bất kỳ lời giải hợp lệ nào.

Constraints

  • \(1 \le n \le 16\)

  • \(0 \le m \le \frac{n(n-1)}{2}\)

Example

Test 1

Input
4 4
1 2
2 3
3 4
4 1
Output
2
1 2 1 2

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.