#include <bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
// find_by_order, order_of_key
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> oset;
typedef tree<int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update> omset;
#define int long long
#define endl '\n'
#define pi pair<int,int>
#define adjs(name, type, size) vector<vector<type>>name(size)
#define adjpass(name, type) vector<vector<type>>&name
#define rest(name, val) memset(name,val,sizeof(name))
#define all(x) x.begin(),x.end()
#define killua ios_base::sync_with_stdio(false), cin.tie(NULL), cout.tie(0)
//changes in dir:
int dx[] = {0, 0, 1, -1, -1, 1, -1, 1};
int dy[] = {1, -1, 0, 0, 1, 1, -1, -1};
int cases = 0;
/***إِلا أَنْ يَشَاءَ اللَّهُ وَاذْكُرْ رَبَّكَ إِذَا نَسِيتَ وَقُلْ عَسَى أَنْ يَهْدِيَنِي رَبِّي لأَقْرَبَ مِنْ هَذَا رَشَدًا ***/
const int N = 1e5 + 5;
int a[N], ans[N]; // 1 , -1
vector<int> adj[N];
int n, m;
map<int, int> dfs(int node, int p, int sum = 0) {
int num = 1;
map<int, int> temp;
for (auto child: adj[node]) {
if (child == p)
continue;
map<int, int> k = dfs(child, node, sum + a[node]);
if (k.size() > temp.size())
swap(k, temp);
for (auto [x, y]: k) {
int nx = x;
temp[nx] += y;
}
}
ans[node] += temp[sum];
temp[a[node] + sum]++;
return temp;
}
void gon() {
cin >> n >> m;
for (int i = 0; i < n; i++)cin >> a[i], (a[i] == 0 ? a[i] = -1 : a[i] = 1);
for (int i = 0; i < n - 1; i++) {
int u, v;
cin >> u >> v;
u--;
v--;
adj[u].push_back(v);
adj[v].push_back(u);
}
dfs(0, -1);
while (m--) {
int k;
cin >> k;
k--;
cout << ans[k] << endl;
}
}
int32_t main() {
#ifndef ONLINE_JUDGE
freopen("Input.txt", "r", stdin);
freopen("Output.txt", "w", stdout);
#endif
killua;
int t = 1;
if (cases) cin >> t;
while (t--) {
gon();
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlPGV4dC9wYl9kcy9hc3NvY19jb250YWluZXIuaHBwPgojaW5jbHVkZTxleHQvcGJfZHMvdHJlZV9wb2xpY3kuaHBwPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7Ci8vIGZpbmRfYnlfb3JkZXIsIG9yZGVyX29mX2tleQp0eXBlZGVmIHRyZWU8aW50LCBudWxsX3R5cGUsIGxlc3M8aW50PiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT4gb3NldDsKdHlwZWRlZiB0cmVlPGludCwgbnVsbF90eXBlLCBsZXNzX2VxdWFsPGludD4sIHJiX3RyZWVfdGFnLCB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+IG9tc2V0OwojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBlbmRsICdcbicKI2RlZmluZSBwaSBwYWlyPGludCxpbnQ+CiNkZWZpbmUgYWRqcyhuYW1lLCB0eXBlLCBzaXplKSB2ZWN0b3I8dmVjdG9yPHR5cGU+Pm5hbWUoc2l6ZSkKI2RlZmluZSBhZGpwYXNzKG5hbWUsIHR5cGUpIHZlY3Rvcjx2ZWN0b3I8dHlwZT4+Jm5hbWUKI2RlZmluZSByZXN0KG5hbWUsIHZhbCkgbWVtc2V0KG5hbWUsdmFsLHNpemVvZihuYW1lKSkKI2RlZmluZSBhbGwoeCkgeC5iZWdpbigpLHguZW5kKCkKI2RlZmluZSBraWxsdWEgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSksIGNpbi50aWUoTlVMTCksIGNvdXQudGllKDApCi8vY2hhbmdlcyBpbiBkaXI6CmludCBkeFtdID0gezAsIDAsIDEsIC0xLCAtMSwgMSwgLTEsIDF9OwppbnQgZHlbXSA9IHsxLCAtMSwgMCwgMCwgMSwgMSwgLTEsIC0xfTsKaW50IGNhc2VzID0gMDsKCi8qKirYpdmQ2YTYpyDYo9mO2YbZkiDZitmO2LTZjtin2KHZjiDYp9mE2YTZkdmO2YfZjyDZiNmO2KfYsNmS2YPZj9ix2ZIg2LHZjtio2ZHZjtmD2Y4g2KXZkNiw2Y7YpyDZhtmO2LPZkNmK2KrZjiDZiNmO2YLZj9mE2ZIg2LnZjtiz2Y7ZiSDYo9mO2YbZkiDZitmO2YfZktiv2ZDZitmO2YbZkNmKINix2Y7YqNmR2ZDZiiDZhNij2Y7ZgtmS2LHZjtio2Y4g2YXZkNmG2ZIg2YfZjtiw2Y7YpyDYsdmO2LTZjtiv2YvYpyAqKiovCmNvbnN0IGludCBOID0gMWU1ICsgNTsKaW50IGFbTl0sIGFuc1tOXTsgLy8gMSAsIC0xCnZlY3RvcjxpbnQ+IGFkaltOXTsKaW50IG4sIG07CgptYXA8aW50LCBpbnQ+IGRmcyhpbnQgbm9kZSwgaW50IHAsIGludCBzdW0gPSAwKSB7CiAgICBpbnQgbnVtID0gMTsKICAgIG1hcDxpbnQsIGludD4gdGVtcDsKICAgIGZvciAoYXV0byBjaGlsZDogYWRqW25vZGVdKSB7CiAgICAgICAgaWYgKGNoaWxkID09IHApCiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIG1hcDxpbnQsIGludD4gayA9IGRmcyhjaGlsZCwgbm9kZSwgc3VtICsgYVtub2RlXSk7CiAgICAgICAgaWYgKGsuc2l6ZSgpID4gdGVtcC5zaXplKCkpCiAgICAgICAgICAgIHN3YXAoaywgdGVtcCk7CiAgICAgICAgZm9yIChhdXRvIFt4LCB5XTogaykgewogICAgICAgICAgICBpbnQgbnggPSB4OwogICAgICAgICAgICB0ZW1wW254XSArPSB5OwogICAgICAgIH0KICAgIH0KICAgIGFuc1tub2RlXSArPSB0ZW1wW3N1bV07CiAgICB0ZW1wW2Fbbm9kZV0gKyBzdW1dKys7CiAgICByZXR1cm4gdGVtcDsKfQoKdm9pZCBnb24oKSB7CiAgICBjaW4gPj4gbiA+PiBtOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspY2luID4+IGFbaV0sIChhW2ldID09IDAgPyBhW2ldID0gLTEgOiBhW2ldID0gMSk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG4gLSAxOyBpKyspIHsKICAgICAgICBpbnQgdSwgdjsKICAgICAgICBjaW4gPj4gdSA+PiB2OwogICAgICAgIHUtLTsKICAgICAgICB2LS07CiAgICAgICAgYWRqW3VdLnB1c2hfYmFjayh2KTsKICAgICAgICBhZGpbdl0ucHVzaF9iYWNrKHUpOwogICAgfQogICAgZGZzKDAsIC0xKTsKICAgIHdoaWxlIChtLS0pIHsKICAgICAgICBpbnQgazsKICAgICAgICBjaW4gPj4gazsKICAgICAgICBrLS07CiAgICAgICAgY291dCA8PCBhbnNba10gPDwgZW5kbDsKICAgIH0KfQoKaW50MzJfdCBtYWluKCkgewojaWZuZGVmIE9OTElORV9KVURHRQogICAgZnJlb3BlbigiSW5wdXQudHh0IiwgInIiLCBzdGRpbik7CiAgICBmcmVvcGVuKCJPdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwojZW5kaWYKICAgIGtpbGx1YTsKICAgIGludCB0ID0gMTsKICAgIGlmIChjYXNlcykgY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKSB7CiAgICAgICAgZ29uKCk7CiAgICB9Cn0=