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

Serval và cây có gốc

Đề bài

Mô tả

Cho một cây có gốc gồm n đỉnh, đỉnh 1 là gốc. Mỗi đỉnh không phải lá được gán một phép toán: max hoặc min. Giá trị tại một đỉnh không phải lá bằng giá trị lớn nhất (nếu là max) hoặc nhỏ nhất (nếu là min) trong số giá trị của tất cả các con của nó.

Gọi k là số lá của cây. Bạn cần điền các số nguyên 1,2,,k vào k lá, mỗi số dùng đúng một lần. Hãy tìm giá trị lớn nhất có thể đạt được ở gốc.

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 số nguyên; số thứ i là phép toán tại đỉnh i: 0min, 1max. Nếu đỉnh i là lá thì vẫn có một số 0 hoặc 1 nhưng bạn có thể bỏ qua.
  • Dòng thứ ba chứa n1 số nguyên f2,f3,,fn, trong đó fi là cha của đỉnh i.

Dữ liệu ra

  • Một số nguyên: giá trị lớn nhất có thể đạt được ở gốc.

Ràng buộc

  • 2n3·105
  • 1fii1

Ví dụ

Input Output Giải thích
6
1 0 1 1 0 1
1 2 2 2 2
1 Gốc là max có một con là đỉnh 2 (phép min). Đỉnh 24 lá con nên giá trị của nó luôn là số nhỏ nhất, tức 1. Dù xếp thế nào, gốc cũng bằng 1.
5
1 0 1 0 1
1 1 1 1
4 Gốc là max với 4 con đều là lá. Có 4 lá, xếp số lớn nhất 4 vào một con là được 4.
8
1 0 0 1 0 1 1 0
1 1 2 2 3 3 3
4 5 lá. Cách bố trí tối ưu cho giá trị 4 ở gốc.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0