Pagini recente » Cod sursa (job #137727) | Cod sursa (job #1375931) | Cod sursa (job #1221318) | Istoria paginii runda/preoji_11-12_2 | Cod sursa (job #1462685)
#include<fstream>
#include<vector>
using namespace std;
ifstream fin("cerere.in");
ofstream fout("cerere.out");
int k[100005],t[100005],stiv[100005],str[100005],i,n,x,y,rad;
vector<int> v[100005];
void dfs(int nod,int poz){
stiv[poz]=nod;
str[nod]=str[ stiv[ poz - k[nod] ] ]+1;
for(int i=0;i<v[nod].size();i++){
dfs(v[nod][i],poz+1);
}
return ;
}
int main(){
fin>>n;
for(i=1;i<=n;i++){
fin>>k[i];
}
for(i=1;i<n;i++){
fin>>x>>y;
t[y]=x;
v[x].push_back(y);
}
for(i=1;i<=n;i++){
if(t[i]==0){
rad=i;
break;
}
}
dfs(rad,1);
for(i=1;i<=n;i++){
fout<<str[i]-1<<" ";
}
return 0;
}