Công tắc đèn cây con

Đề bài

Mô tả

Cho một cây có gốc gồm n đỉnh, đỉnh 1 là gốc. Mỗi đỉnh chứa một bóng đèn đang ở trạng thái bật (1) hoặc tắt (0).

Cây con của đỉnh v là tập tất cả các đỉnh mà đường đi ngắn nhất từ chúng tới gốc phải đi qua v (bao gồm chính v).

Bạn phải xử lý q truy vấn, mỗi truy vấn thuộc một trong hai loại:

  • pow v: đảo trạng thái mọi bóng đèn trong cây con của v (đèn đang bật thì tắt đi, đang tắt thì bật lên).
  • get v: đếm số bóng đèn đang bật trong cây con của v.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n: số đỉnh của cây.
  • Dòng thứ hai chứa n−1 số nguyên p2,p3,…,pn (1≤pi<i), trong đó pi là cha của đỉnh i. Khi n=1 dòng này rỗng.
  • Dòng thứ ba chứa n số nguyên t1,t2,…,tn (0≤ti≤1): trạng thái ban đầu của đèn tại đỉnh i.
  • Dòng thứ tư chứa số nguyên q: số truy vấn.
  • q dòng tiếp theo, mỗi dòng có dạng get v hoặc pow v (1≤v≤n).

Dữ liệu ra

Với mỗi truy vấn get v, in ra trên một dòng số bóng đèn đang bật trong cây con của v.

Ràng buộc

  • 1≤n≤2·105
  • 1≤q≤2·105
  • 1≤pi<i
  • 0≤ti≤1

Ví dụ

Input Output Giải thích
4
1 1 1
1 0 0 1
9
get 1
get 2
get 3
get 4
pow 1
get 1
get 2
get 3
get 4
2
0
0
1
2
1
1
0
Ban đầu đèn bật ở đỉnh 1 và 4. Cây con của 1 (cả cây) có 2 đèn bật, cây con của 2, 3 đều có 0, cây con của 4 có 1. Sau pow 1 mọi đèn bị đảo: bật ở 2, 3; tắt ở 1, 4. Khi đó cây con của 1 có 2 đèn bật, của 2 và 3 mỗi cây 1, của 4 có 0.
1

1
4
pow 1
get 1
pow 1
get 1
0
1
Cây chỉ có một đỉnh với đèn bật. pow 1 tắt đèn nên get 1 trả về 0; pow 1 lần nữa bật lại nên get 1 trả về 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