#include <bits/stdc++.h>
using namespace std;
long long int ans = 0, n, data[100003];
vector<pair<long long int, long long int> > a[100004];
void dfs(long long int node, long long int d) {
  long long int i;
  if (d > data[node]) return;
  ans++;
  for (i = 0; i < a[node].size(); i++) {
    dfs(a[node][i].first, max(d + a[node][i].second, 0LL));
  }
}
int main() {
  long long int i, x, y;
  cin >> n;
  for (i = 1; i <= n; i++) cin >> data[i];
  for (i = 1; i < n; i++) {
    cin >> x >> y;
    a[x].push_back(make_pair(i + 1, y));
  }
  dfs(1, 0);
  cout << n - ans << endl;
  return 0;
}
