#pragma GCC optimize("O3,inline")
#include <bits/stdc++.h>
using namespace std;
#define int long long
vector<int> T;
vector<vector<int>> adjlist;
signed main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int N, D, a, b; cin >> N >> D;
adjlist.resize(N, vector<int>());
for (int i = 0; i < N; i++) {
cin >> a;
T.push_back(a);
}
for (int i = 0; i < N - 1; i++) {
cin >> a >> b; a--, b--;
adjlist[a].push_back(b);
adjlist[b].push_back(a);
}
vector<int> ans(N, 0);
for (int i = 0; i < N; i++) {
ans[i] += !(bool)(T[i]);
}
if (D == 0) {
for (int i : ans) cout << i << '\n';
return 0;
}
for (int i = 0; i < N; i++) {
for (int j : adjlist[i]) {
ans[i] += (T[j] <= 1);
}
cout << ans[i] << '\n';
}
}