#include <bits/stdc++.h>
using namespace std;
const int N=10000010;
int n,q,a[N],mk[N],ans;
int head[N],tot;
struct edge {
int v,nxt;
}e[N*2];
void add (int u,int v) {
e[++tot].v=v;
e[tot].nxt=head[u];
head[u]=tot;
}
int main () {
freopen("birds.in","r",stdin);
freopen("birds.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin >> n;
for (int i=1;i<n;i++) {
int x,y;
cin >> x >> y;
add(x,y);
add(y,x);
}
for (int i=1;i<=n;i++) cin >> a[i];
for (int i=1;i<=n;i++) {
if (a[i]&&!mk[i]) {
dfs(i);
ans++;
}
}
cout << ans <<"\n";
//ans=0;
cin >> q;
while (q--) {
memset(mk,0,sizeof(mk));
int x;
cin >> x;
if (a[x]==0) a[x]=1;
else a[x]=0;
int sum=0;
for (int i=head[x];i;i=e[i].nxt) {
int v=e[i].v;
if (a[v]) sum++;
}
if (a[x]) {
if (sum==0) ans++;
else if (sum==2) ans--;
}else{
if (sum==0) ans--;
else ans++;
}
cout << ans <<"\n";
//ans=0;
}
return 0;
}