Tô Màu Cây

Đề bài

Mô tả

Cho một cây có N nút (gốc ở nút 1). Có Q thao tác:

  • Thao tác 1: 1 x c: Tô màu c cho toàn bộ cây con gốc x (gồm x và tất cả hậu duệ của x). Mỗi nút có thể mang nhiều màu khác nhau từ các lần tô khác nhau. Nếu một nút đã mang màu c từ trước thì lần tô này không thêm gì cho nút đó.
  • Thao tác 2: 2 x: Đếm tổng số cặp (nút v, màu c) mà nút v thuộc cây con gốc x và v đang mang màu c.

Dữ liệu vào

  • Dòng đầu: N và Q (1≤N,Q≤105).
  • N−1 dòng tiếp theo: mỗi dòng gồm hai số u,v là cạnh nối u và v.
  • Q dòng tiếp theo: mỗi dòng là một thao tác (dạng 1 x c hoặc 2 x).
    • 1≤x≤N, 1≤c≤105.

Dữ liệu ra

Với mỗi thao tác loại 2, in kết quả trên một dòng.

Ví dụ

Input Output Giải thích
5 18
1 2
1 3
3 4
3 5
1 4 1
2 1
2 2
2 3
2 4
2 5
1 5 1
2 1
2 2
2 3
2 4
2 5
1 1 1
2 1
2 2
2 3
2 4
2 5
1
0
1
1
0
2
0
2
1
1
5
1
3
1
1
Cây: nút 1 nối với 2 và 3; nút 3 nối với 4 và 5. Sau 1 4 1 chỉ nút 4 mang màu 1, nên cây con gốc 1 có đúng 1 cặp. Sau 1 5 1 có thêm nút 5, cây con gốc 1 có 2 cặp. Sau 1 1 1 cả 5 nút đều mang màu 1 (nút 4 và 5 đã có sẵn màu này nên không sinh thêm cặp), cây con gốc 1 có 5 cặp còn cây con gốc 3 có 3 cặp.
3 4
1 2
2 3
1 2 5
2 1
1 1 5
2 1
2
3
Cây là đường thẳng 1 - 2 - 3. Sau 1 2 5, hai nút 2 và 3 mang màu 5 nên đáp án là 2. Sau 1 1 5, chỉ nút 1 nhận thêm màu 5, hai nút còn lại đã có màu này rồi, nên đáp án là 3 chứ không phải 5.

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