trang chủ / đề bài / gr13_colour

Tô ba màu cho cây

Đề bài

Mô tả

Cho một cây gồm n đỉnh đánh số từ 1 đến n. Cần tô mỗi đỉnh bằng một trong ba màu 1,2,3 sao cho hai đỉnh nối trực tiếp bởi một cạnh luôn có màu khác nhau. Một số đỉnh đã được tô sẵn: đỉnh v có cv≠0 bắt buộc phải mang màu cv, còn đỉnh có cv=0 được tô tùy ý.

Với mỗi đỉnh v và mỗi màu x∈{1,2,3}, hãy đếm số cách tô hợp lệ của cả cây mà trong đó đỉnh v mang màu x. Vì kết quả có thể rất lớn, hãy in ra phần dư khi chia cho 109+7.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên n.
  • Dòng thứ hai chứa n số nguyên c1,c2,…,cn.
  • n−1 dòng tiếp theo, mỗi dòng chứa hai số nguyên u,v cho biết có cạnh nối đỉnh u và đỉnh v.

Dữ liệu ra

In ra n dòng, dòng thứ v chứa ba số nguyên: số cách tô hợp lệ mà đỉnh v mang màu 1, màu 2, màu 3 (theo modulo 109+7).

Ràng buộc

  • 1≤n≤105
  • 0≤cv≤3
  • 1≤u,v≤n, u≠v

Ví dụ

Input Output Giải thích
5
0 0 1 0 2
1 2
1 3
2 4
2 5
0 4 2
4 0 2
6 0 0
1 3 2
0 6 0
Có 6 cách tô. Đỉnh 1 kề đỉnh 3 (màu 1) nên không thể mang màu 1; nếu đỉnh 1 mang màu 2 thì đỉnh 2 mang màu 1 hoặc 3, đỉnh 4 có 2 lựa chọn, được 4 cách.
3
0 2 0
1 2
3 2
2 0 2
0 4 0
2 0 2
Đỉnh 1 và đỉnh 3 mỗi đỉnh chọn màu 1 hoặc 3, tổng cộng 4 cách.

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