1 #include<iostream>
2 #include<fstream>
3 #include<algorithm>
4 #define N 500001
5 using namespace std;
6 int n;
7 struct sb
8 {
9 int val,l,r;
10 }a[N];
11 int cs=0;
12 int f[N];
13 void dfs(int p)
14 {
15 if (p==0) return;
16 dfs(a[p].l);
17 f[++cs]=a[p].val;
18 dfs(a[p].r);
19 }
20 int b[N];
21 int ef(int l,int r,int p)
22 {
23 while (l<=r)
24 {
25 int mid=(l+r)/2;
26 if (b[mid]<=p)
27 l=mid+1;
28 else
29 r=mid-1;
30 }
31 return l;
32 }
33 int len=1;
34 void lis()
35 {
36 b[1]=f[1];
37 for (int i=2;i<=n;i++)
38 {
39 if (f[i]>=b[len])
40 b[++len]=f[i];
41 else
42 {
43 int wz=ef(1,len-1,f[i]);
44 b[wz]=f[i];
45 }
46 }
47 }
48 int main ()
49 {
50 cin>>n;
51 for (int i=1;i<=n;i++)
52 cin>>a[i].val;
53 int x,ch;
54 for (int i=2;i<=n;i++)
55 {
56 cin>>x>>ch;
57 if (ch==0)
58 a[x].l=i;
59 else
60 a[x].r=i;
61 }
62 dfs(1);
63 for (int i=1;i<=n;i++)
64 f[i]-=i;
65 lis();
66 cout<<n-len;
67 }