Problem ID:
ptree
Points:
3 (partial)
Time limit:
1.0s
Memory limit:
1G
Input:
stdin
Output:
stdout
Author:
Problem type
Allowed languages
C, C++, Java, Pascal, Perl, Python
Cho một cây gồm ~n~ nút và ~k~ nút lá, các nút được đánh số từ ~1~ đến ~n~, trong đó nút ~1~ là nút gốc. Mỗi nút thuộc một trong hai loại, nút đen và nút trắng. Mỗi nút lá được gán một số nguyên phân biệt trong đoạn ~[1, k]~, các nút còn lại được gán theo quy tắc: nút đen được gán giá trị là số lớn nhất được gán cho các nút con, ngược lại nút trắng được gán giá trị là số nhỏ nhất được gán cho các nút con.
Yêu cầu:
Tìm gán cho các nút lá để nút gốc ~1~ có nhãn lớn nhất.
Input
- Dòng đầu chứa số nguyên ~n~;
- Dòng thứ hai chứa ~n~ số nguyên, số thứ ~i~ bằng ~1~ hoặc ~0~ mô tả các nút thứ ~i~ là nút đen hay nút trắng;
- Tiếp theo là ~n - 1~ số, số thứ ~j~ bằng ~p~ có nghĩa là nút ~j + 1~ có cha là ~p~.
Output
- Gồm một dòng chứa một số nguyên là nhãn nút gốc ~1~ lớn nhất tìm được.
Sample Input
5
1 1 0 1 1
1 1 3 3
Sample Output
3
Giới hạn
- Subtask 1: ~n <= 10~;
Subtask 2: ~n <= 10^6~;
Nguồn: Trại đông Bảo Lộc 2021 - Thầy Đỗ Đức Đông
Comments