#include <bits/stdc++.h>
using namespace std;
vector<int> mp[100001];
int a[100001];
long long dfs(int k, int p) {
  vector<long long> tmp;
  for (int dst : mp[k])
    if (dst != p && a[dst]) {
      --a[dst];
      tmp.push_back(dfs(dst, k));
    }
  sort(tmp.begin(), tmp.end());
  long long ret = 0;
  while (tmp.size() && a[k]) {
    --a[k];
    ret += 2 + tmp.back();
    tmp.pop_back();
  }
  for (int dst : mp[k])
    if (dst != p) {
      long long m = min(a[k], a[dst]);
      a[k] -= m;
      a[dst] -= m;
      ret += 2 * m;
    }
  return ret;
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", a + i);
  for (int i = 1; i < n; i++) {
    int t1, t2;
    scanf("%d%d", &t1, &t2);
    mp[t1].push_back(t2);
    mp[t2].push_back(t1);
  }
  int s;
  scanf("%d", &s);
  printf("%I64d", dfs(s, -1));
  return 0;
}
