Pagini recente » Cod sursa (job #1586718) | Cod sursa (job #1444370) | Cod sursa (job #2325020) | Cod sursa (job #702003) | Cod sursa (job #3129512)
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ifstream fin("cerere.in");
ofstream fout("cerere.out");
int n;
vector<vector<int>> G;
vector<int> k;
vector<int> ans;
unordered_map<int, int> mp;
void GetAns(int s, int t){
mp[t] = s;
/*cout << s+1 << "\n";
for(const auto x : v)
cout << x+1 << " ";
cout << "\n\n";*/
ans[s] = 1 + ans[mp[t - k[s]]];
for(const auto u : G[s])
GetAns(u, t+1);
}
int main(){
//ios_base::sync_with_stdio(false);
//cin.tie(NULL);
fin >> n;
G.resize(n); k.resize(n); ans.resize(n, -1);
for(int i = 0; i < n; ++i)
fin >> k[i];
vector<bool> isKid(n, false);
for(int i = 0, a, b; i < n-1; ++i)
fin >> a >> b, G[a-1].emplace_back(b-1), isKid[b-1] = true;
//cout << "lol\n";
int root;
for(root = 0; isKid[root]; ++root);
vector<int> v;
GetAns(root, 0);
for(const auto x : ans)
fout << x << " ";
}