#include <bits/stdc++.h>
using namespace std;
int n, q, fa[666666];
double a[666666], sc[666666], ans = 0;
int M = 0, fst[666666], vb[666666], nxt[666666];
void ad_de(int a, int b) {
  ++M;
  nxt[M] = fst[a];
  fst[a] = M;
  vb[M] = b;
}
void adde(int a, int b) {
  ad_de(a, b);
  ad_de(b, a);
}
void dfs(int x, int f = 0) {
  fa[x] = f;
  for (int e = fst[x], b = vb[e]; e; e = nxt[e], b = vb[e])
    if (b != f) sc[x] += a[b], dfs(b, x);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) scanf("%lf", a + i), a[i] = 1 - a[i];
  for (int i = 1, a, b; i < n; ++i) scanf("%d%d", &a, &b), ++a, ++b, adde(a, b);
  dfs(1);
  for (int i = 1; i <= n; ++i) ans += a[i] - a[i] * sc[i];
  scanf("%d", &q);
  while (q--) {
    int x;
    double u;
    scanf("%d%lf", &x, &u);
    u = 1 - u;
    ++x;
    u = u - a[x];
    ans += u * (1 - sc[x]);
    if (fa[x]) ans -= a[fa[x]] * u, sc[fa[x]] += u;
    a[x] += u;
    printf("%.10lf\n", ans);
  }
}
