Pagini recente » Cod sursa (job #2650763) | Cod sursa (job #2668011) | Cod sursa (job #3274306) | Cod sursa (job #3239323) | Cod sursa (job #2542262)
#include <bits/stdc++.h>
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
int n;
#define Nm 100001
int k[Nm],parent[Nm],ans[Nm];
vector < int > v[Nm];
vector < int > act;
void dfs(int nod){
act.push_back(nod);
ans[nod]=ans[act[act.size()-k[nod]-1]]+1;
for(auto nod_m : v[nod])
dfs(nod_m);
act.pop_back();
}
int main()
{
f>>n;
int i;
for(i=1; i<=n; i++)
f>>k[i];
for(i=1; i<=n-1; i++){
int n1,n2;
f>>n1>>n2;
v[n1].push_back(n2);
parent[n2]=n1;
}
int root;
for(i=1; i<=n; i++)
if(parent[i]==0){
root=i;
break;
}
dfs(root);
for(i=1; i<=n; i++)
g<<ans[i]-1<<' ';
return 0;
}