#include <bits/stdc++.h>
using namespace std;
const int N = 200005;
int n, q;
int c[N];
vector<int> adj[N];
int depth[N];
int up[N][20];
bool has_coin[N];
int prr[N];
int W = 0;
void dfs1(int u, int p) {
up[u][0] = p;
for (int i = 1; i < 20; i++) {
up[u][i] = up[up[u][i - 1]][i - 1];
}
has_coin[u] = c[u];
for (int v : adj[u]) {
if (v != p) {
depth[v] = depth[u] + 1;
dfs1(v, u);
has_coin[u] |= has_coin[v];
}
}
}
void dfs2(int u, int p, int current_prr) {
if (has_coin[u]) {
prr[u] = u;
} else {
prr[u] = current_prr;
}
for (int v : adj[u]) {
if (v != p) {
dfs2(v, u, prr[u]);
}
}
}
int get_lca(int u, int v) {
if (depth[u] < depth[v]) swap(u, v);
int diff = depth[u] - depth[v];
for (int i = 0; i < 20; i++) {
if ((diff >> i) & 1) {
u = up[u][i];
}
}
if (u == v) return u;
for (int i = 19; i >= 0; i--) {
if (up[u][i] != up[v][i]) {
u = up[u][i];
v = up[v][i];
}
}
return up[u][0];
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
if (!(cin >> n >> q)) return 0;
int root = 1;
for (int i = 1; i <= n; i++) {
cin >> c[i];
if (c[i] == 1) root = i;
}
for (int i = 1; i < n; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
depth[root] = 0;
dfs1(root, root);
dfs2(root, root, root);
for (int i = 1; i <= n; i++) {
if (i != root && has_coin[i]) {
W++;
}
}
for (int i = 0; i < q; i++) {
int a, b;
cin >> a >> b;
int lca = get_lca(a, b);
int dist = depth[a] + depth[b] - 2 * depth[lca];
if (has_coin[lca]) {
long long ans = 2LL * W + 2LL * (depth[a] - depth[prr[a]]) + 2LL * (depth[b] - depth[prr[b]]) - dist;
cout << ans << "\n";
} else {
long long ans = 2LL * W + dist + 2LL * (depth[lca] - depth[prr[a]]);
cout << ans << "\n";
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE4gPSAyMDAwMDU7CmludCBuLCBxOwppbnQgY1tOXTsKdmVjdG9yPGludD4gYWRqW05dOwoKaW50IGRlcHRoW05dOwppbnQgdXBbTl1bMjBdOwpib29sIGhhc19jb2luW05dOwppbnQgcHJyW05dOwppbnQgVyA9IDA7Cgp2b2lkIGRmczEoaW50IHUsIGludCBwKSB7CiAgICB1cFt1XVswXSA9IHA7CiAgICBmb3IgKGludCBpID0gMTsgaSA8IDIwOyBpKyspIHsKICAgICAgICB1cFt1XVtpXSA9IHVwW3VwW3VdW2kgLSAxXV1baSAtIDFdOwogICAgfQogICAgaGFzX2NvaW5bdV0gPSBjW3VdOwogICAgZm9yIChpbnQgdiA6IGFkalt1XSkgewogICAgICAgIGlmICh2ICE9IHApIHsKICAgICAgICAgICAgZGVwdGhbdl0gPSBkZXB0aFt1XSArIDE7CiAgICAgICAgICAgIGRmczEodiwgdSk7CiAgICAgICAgICAgIGhhc19jb2luW3VdIHw9IGhhc19jb2luW3ZdOwogICAgICAgIH0KICAgIH0KfQoKdm9pZCBkZnMyKGludCB1LCBpbnQgcCwgaW50IGN1cnJlbnRfcHJyKSB7CiAgICBpZiAoaGFzX2NvaW5bdV0pIHsKICAgICAgICBwcnJbdV0gPSB1OwogICAgfSBlbHNlIHsKICAgICAgICBwcnJbdV0gPSBjdXJyZW50X3BycjsKICAgIH0KICAgIGZvciAoaW50IHYgOiBhZGpbdV0pIHsKICAgICAgICBpZiAodiAhPSBwKSB7CiAgICAgICAgICAgIGRmczIodiwgdSwgcHJyW3VdKTsKICAgICAgICB9CiAgICB9Cn0KCmludCBnZXRfbGNhKGludCB1LCBpbnQgdikgewogICAgaWYgKGRlcHRoW3VdIDwgZGVwdGhbdl0pIHN3YXAodSwgdik7CiAgICBpbnQgZGlmZiA9IGRlcHRoW3VdIC0gZGVwdGhbdl07CiAgICBmb3IgKGludCBpID0gMDsgaSA8IDIwOyBpKyspIHsKICAgICAgICBpZiAoKGRpZmYgPj4gaSkgJiAxKSB7CiAgICAgICAgICAgIHUgPSB1cFt1XVtpXTsKICAgICAgICB9CiAgICB9CiAgICBpZiAodSA9PSB2KSByZXR1cm4gdTsKICAgIGZvciAoaW50IGkgPSAxOTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICBpZiAodXBbdV1baV0gIT0gdXBbdl1baV0pIHsKICAgICAgICAgICAgdSA9IHVwW3VdW2ldOwogICAgICAgICAgICB2ID0gdXBbdl1baV07CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHVwW3VdWzBdOwp9CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY291dC50aWUoMCk7CgogICAgaWYgKCEoY2luID4+IG4gPj4gcSkpIHJldHVybiAwOwoKICAgIGludCByb290ID0gMTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGNpbiA+PiBjW2ldOwogICAgICAgIGlmIChjW2ldID09IDEpIHJvb3QgPSBpOwogICAgfQoKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgaW50IHUsIHY7CiAgICAgICAgY2luID4+IHUgPj4gdjsKICAgICAgICBhZGpbdV0ucHVzaF9iYWNrKHYpOwogICAgICAgIGFkalt2XS5wdXNoX2JhY2sodSk7CiAgICB9CgogICAgZGVwdGhbcm9vdF0gPSAwOwogICAgZGZzMShyb290LCByb290KTsKICAgIGRmczIocm9vdCwgcm9vdCwgcm9vdCk7CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgaWYgKGkgIT0gcm9vdCAmJiBoYXNfY29pbltpXSkgewogICAgICAgICAgICBXKys7CiAgICAgICAgfQogICAgfQoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcTsgaSsrKSB7CiAgICAgICAgaW50IGEsIGI7CiAgICAgICAgY2luID4+IGEgPj4gYjsKICAgICAgICBpbnQgbGNhID0gZ2V0X2xjYShhLCBiKTsKICAgICAgICBpbnQgZGlzdCA9IGRlcHRoW2FdICsgZGVwdGhbYl0gLSAyICogZGVwdGhbbGNhXTsKCiAgICAgICAgaWYgKGhhc19jb2luW2xjYV0pIHsKICAgICAgICAgICAgbG9uZyBsb25nIGFucyA9IDJMTCAqIFcgKyAyTEwgKiAoZGVwdGhbYV0gLSBkZXB0aFtwcnJbYV1dKSArIDJMTCAqIChkZXB0aFtiXSAtIGRlcHRoW3BycltiXV0pIC0gZGlzdDsKICAgICAgICAgICAgY291dCA8PCBhbnMgPDwgIlxuIjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBsb25nIGxvbmcgYW5zID0gMkxMICogVyArIGRpc3QgKyAyTEwgKiAoZGVwdGhbbGNhXSAtIGRlcHRoW3ByclthXV0pOwogICAgICAgICAgICBjb3V0IDw8IGFucyA8PCAiXG4iOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMDsKfQo=