P3365 改造二叉树

题目背景

勤奋又善于思考的小 L 接触了信息学竞赛,开始的学习十分顺利。但是,小 L 对数据结构的掌握实在十分渣渣。 所以,小 L 当时卡在了二叉树。

题目描述

在计算机科学中,二叉树是每个结点最多有两个子结点的有序树。通常子结点被称作“左孩子”和“右孩子”。二叉树被用作二叉搜索树和二叉堆。随后他又和他人讨论起了二叉搜索树。什么是二叉搜索树呢?二叉搜索树首先是一棵二叉树。设 $key_p$ 表示结点 $p$ 上的数值。对于其中的每个结点 $p$,若其存在左孩子 $lch$,则 $key_p>key_{lch}$;若其存在右孩子 $rch$,则 $key_p

输入格式

第一行一个正整数 $n$ 表示二叉树节点数。 第二行 $n$ 个正整数用空格分隔开,第 $i$ 个数 $a_i$ 表示结点 $i$ 的原始数值。 此后 $n-1$ 行每行两个非负整数 $fa$,$ch$,第 $i+2$ 行描述结点 $i+1$ 的父亲编号 $fa$,以及父子关系 $ch$,($ch = 0$ 表示 $i+1$ 为左儿子,$ch = 1$ 表示 $i + 1$ 为右儿子)。 为了让你稍微减轻些负担,小 L 规定:结点 $1$ 一定是二叉树的根哦!

输出格式

仅一行包含一个整数,表示最少的修改次数。

说明/提示

对于 $20\%$ 的数据:$n \leq 10$,$a_i \leq 100$。 对于 $40\%$ 的数据:$n \leq 100$,$a_i \leq 200$。 对于 $60\%$ 的数据:$n \leq 2000$。 对于 $100\%$ 的数据:$n \leq 10^5$,$a_i < 2^{31}$。