Pagini recente » Cod sursa (job #2307228) | Cod sursa (job #1038542) | Cod sursa (job #22863) | Cod sursa (job #2082689) | Cod sursa (job #1076533)
#include<fstream>
#include<vector>
using namespace std;
int rad,k[100005],t[100005],g[100005],x,y,n;
ifstream in("cerere.in"); ofstream out("cerere.out");
vector <int> l[100005];
int maimuta(int nod){
if(nod==rad || k[nod]==0) return 0;
int crt=nod;
for(int i=1;i<=k[nod];++i) crt=t[crt];
return 1+maimuta(crt);
}
int main(){
in>>n;
for(int i=1;i<=n;++i) in>>k[i];
for(int i=1;i<n;++i){
in>>x>>y;
g[y]++;
t[y]=x;
l[x].push_back(y); l[y].push_back(x);
}
for(int i=1;i<=n;++i) if(g[i]==0) rad=i;
for(int i=1;i<=n;++i)
out<<maimuta(i)<<' ';
out<<'\n';
return 0;
}