Pagini recente » Cod sursa (job #2390543) | Cod sursa (job #1485133) | Cod sursa (job #1894806) | Cod sursa (job #1225694) | Cod sursa (job #3129511)
#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;
void GetAns(int s, vector<int> v){
v.emplace_back(s);
/*cout << s+1 << "\n";
for(const auto x : v)
cout << x+1 << " ";
cout << "\n\n";*/
ans[s] = 1 + ans[v[v.size()-k[s]-1]];
for(const auto u : G[s])
GetAns(u, v);
}
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, v);
for(const auto x : ans)
fout << x << " ";
}