trang chủ / đề bài / icecolor

Tô màu kem

Đề bài

Mô tả

Cho một cây T gồm n đỉnh và m loại kem được đánh số từ 1 đến m. Đỉnh thứ i của cây chứa một tập gồm si loại kem đôi một khác nhau.

Dữ liệu đảm bảo: với mỗi loại kem i, tập các đỉnh của T có chứa loại kem i tạo thành một đồ thị con liên thông của T (tập rỗng cũng được coi là liên thông).

Từ cây T, ta dựng đồ thị G gồm m đỉnh, mỗi đỉnh ứng với một loại kem. Trong G có cạnh nối đỉnh u và đỉnh v (u≠v) khi và chỉ khi tồn tại ít nhất một đỉnh của T chứa đồng thời cả loại kem u và loại kem v.

Hãy tô màu tất cả các đỉnh của G sao cho hai đỉnh kề nhau luôn được tô hai màu khác nhau, và số màu được dùng là ít nhất có thể.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n và m — số đỉnh của cây và số loại kem.
  • n dòng tiếp theo, dòng thứ i bắt đầu bằng số nguyên si, sau đó là si số nguyên đôi một khác nhau trong đoạn [1,m] — các loại kem có ở đỉnh i.
  • n−1 dòng cuối, mỗi dòng chứa hai số nguyên u và v — một cạnh của cây T.

Dữ liệu ra

  • Dòng đầu in ra số nguyên c — số màu ít nhất cần dùng.
  • Dòng thứ hai in ra m số nguyên, số thứ i là màu của đỉnh i trong G, mỗi màu nằm trong đoạn [1,c].

Nếu có nhiều cách tô thoả mãn, in ra một cách bất kỳ.

Ràng buộc

  • 1≤n,m≤3·105
  • 0≤si≤3·105 và tổng tất cả si không vượt quá 5·105
  • 1≤u,v≤n

Ví dụ

Input Output Giải thích
3 3
1 1
2 2 3
1 2
1 2
2 3
2
1 1 2
Loại kem 1 chỉ có ở đỉnh 1 nên không kề với loại nào, tô màu nào cũng được. Loại 2 và loại 3 cùng có mặt ở đỉnh 2 nên phải khác màu. Vậy cần 2 màu.
4 5
0
1 1
1 3
3 2 4 5
2 1
3 2
4 3
3
1 1 1 2 3
Đỉnh 4 chứa ba loại 2,4,5 nên ba loại này đôi một kề nhau, bắt buộc phải dùng ít nhất 3 màu. Loại 1 và loại 3 không kề với bất cứ loại nào nên dùng lại màu 1.

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0