#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define fi first
#define se second
#define int long long
typedef pair<int,int> pii;
const int MAXN = 3e5 +5;
int n, ans, c, r, b;
vector <vector<int>> adj;
vector <int> col, red, blue;
vector <bool> vis;
void dfs(int x){
vis[x] = true;
if (col[x] == 1)red[x]++;
if ( col[x] == 2) blue[x]++;
for (auto i : adj[x]){
if (vis[i]) continue;
dfs(i);
red[x] += red[i];
blue[x] += blue[i];
}
if ((red[x] == r && !blue[x]) || (blue[x] == b && !red[x])) ans++;
}
signed main(){
cin >> n;
vis.resize(n+1);
adj.resize(n+1);
col.resize(n+1);
red.resize(n+1);
blue.resize(n+1);
for (int i =1; i <= n; i++){
cin >> c;
if ( c == 1) r++;
else if ( c== 2) b++;
col[i] = c;
}
for (int i =1; i <= n-1; i++){
int x, y;
cin >> x >> y;
adj[x].push_back(y);
adj[y].push_back(x);
}
dfs(1);
cout << ans;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7IAojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgaW50IGxvbmcgbG9uZwp0eXBlZGVmIHBhaXI8aW50LGludD4gcGlpOwpjb25zdCBpbnQgTUFYTiA9IDNlNSArNTsKaW50IG4sIGFucywgYywgciwgYjsKdmVjdG9yIDx2ZWN0b3I8aW50Pj4gYWRqOwp2ZWN0b3IgPGludD4gY29sLCByZWQsIGJsdWU7CnZlY3RvciA8Ym9vbD4gdmlzOwoKdm9pZCBkZnMoaW50IHgpewogICAgdmlzW3hdID0gdHJ1ZTsKICAgIGlmIChjb2xbeF0gPT0gMSlyZWRbeF0rKzsKICAgIGlmICggY29sW3hdID09IDIpIGJsdWVbeF0rKzsKICAgIGZvciAoYXV0byBpIDogYWRqW3hdKXsKICAgICAgICBpZiAodmlzW2ldKSBjb250aW51ZTsKICAgICAgICBkZnMoaSk7CiAgICAgICAgcmVkW3hdICs9IHJlZFtpXTsKICAgICAgICBibHVlW3hdICs9IGJsdWVbaV07CiAgICB9CiAgICBpZiAoKHJlZFt4XSA9PSByICYmICFibHVlW3hdKSB8fCAoYmx1ZVt4XSA9PSBiICYmICFyZWRbeF0pKSBhbnMrKzsKfQoKc2lnbmVkIG1haW4oKXsKCiAgICBjaW4gPj4gbjsKdmlzLnJlc2l6ZShuKzEpOwphZGoucmVzaXplKG4rMSk7CmNvbC5yZXNpemUobisxKTsKcmVkLnJlc2l6ZShuKzEpOwpibHVlLnJlc2l6ZShuKzEpOwogICAgZm9yIChpbnQgaSA9MTsgaSA8PSBuOyBpKyspewogICAgICAgIGNpbiA+PiBjOwogICAgICAgIGlmICggYyA9PSAxKSByKys7CiAgICAgICAgZWxzZSBpZiAoIGM9PSAyKSBiKys7CiAgICAgICAgY29sW2ldID0gYzsKICAgIH0KICAgIGZvciAoaW50IGkgPTE7IGkgPD0gbi0xOyBpKyspewogICAgICAgIGludCB4LCB5OwogICAgICAgIGNpbiA+PiB4ID4+IHk7CiAgICAgICAgYWRqW3hdLnB1c2hfYmFjayh5KTsKICAgICAgICBhZGpbeV0ucHVzaF9iYWNrKHgpOwogICAgfQogICAgCiAgICBkZnMoMSk7CiAgICBjb3V0IDw8IGFuczsKICAgCn0=