trang chủ / bài tập / icecream

Tô màu loại 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. Mỗi đỉnh i của cây chứa một tập gồm si loại kem khác nhau. Với mỗi loại kem t (từ 1 đến m), tập các đỉnh trong T chứa loại kem t tạo thành một đồ thị con liên thông của T (quy ước: tập rỗng cũng được coi là liên thông).

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

Hãy tô màu các đỉnh của G sao cho không có hai đỉnh kề nhau cùng màu, với số màu sử dụng là ít nhất.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm.
  • 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 phân biệt — danh sách các loại kem ở đỉnh i.
  • n1 dòng cuối, mỗi dòng chứa hai số nguyên uv mô tả một cạnh của cây.

Dữ liệu ra

  • Dòng đầu in một số nguyên c — số màu nhỏ nhất cần dùng.
  • Dòng thứ hai in m số nguyên, số thứ i là màu của đỉnh i trong G (mỗi màu từ 1 đến c).

Nếu có nhiều cách tô hợp lệ, in ra một cách bất kỳ.

Ràng buộc

  • 1n,m3·105
  • 0si3·105
  • si5·105
  • 1u,vn, các cạnh tạo thành một cây.

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 23 cùng có mặt ở đỉnh 2 nên phải khác màu. Loại 1 chỉ ở đỉnh 1 nên có thể tô tuỳ ý.
4 5
0
1 1
1 3
3 2 4 5
2 1
3 2
4 3
3
1 1 1 2 3
Tại đỉnh 4 có ba loại 2,4,5 nên cần ít nhất 3 màu. Các loại còn lại có thể tô bằng màu bất kỳ.

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.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0