#include <bits/stdc++.h>
using namespace std;
#define MAXN 100001
int n, m, ans, cnt;
int a[MAXN], g[MAXN], f[MAXN], b[MAXN];
int ls[MAXN], rs[MAXN];
void dfs(int x){
if (ls[x]) dfs(ls[x]);
b[++cnt] = a[x];
if (rs[x]) dfs(rs[x]);
}
namespace BIT{
#define lbw(x) (x & -x)
int c[MAXN];
void add(int x, int v){for (; x<=n; x+=lbw(x)) c[x] = max(c[x], v);}
int query(int x){int res(0); for (; x; x-=lbw(x)) res = max(res, c[x]); return res;}
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n; for (int i(1); i<=n; ++i) cin >> a[i], g[i] = a[i];
sort(g+1, g+n+1); m = unique(g+1, g+n+1)-g;
for (int i(1); i<=n; ++i) a[i] = lower_bound(g+1, g+m+1, a[i])-g;
for (int i(2), u, v; i<=n; ++i){cin >> u >> v; if (v) rs[u] = i; else ls[u] = i;}
dfs(1); assert(cnt == n);
for (int i(1); i<=cnt; ++i){
BIT::add(b[i], f[i]=BIT::query(b[i]-1)+1);
ans = max(ans, f[i]);
}
cout << n-ans;
return 0;
}
交上去会全部 RE,应该是 assert 那里,为什么 cnt 和 n 会不相等?