Pagini recente » Cod sursa (job #859730) | Cod sursa (job #225508) | Cod sursa (job #741986) | Cod sursa (job #2256060) | Cod sursa (job #2358674)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("cerere.in");
ofstream fout("cerere.out");
vector<int>a[100100];
int stiva[100100],v[100100],d[100100],k[100100],n;
void dfs(int nod,int pas){
v[nod]=1;
stiva[pas]=nod;
d[nod]=1+d[stiva[pas-k[nod]]];
for(int i=0;i<a[nod].size();i++){
int vecin=a[nod][i];
if(v[vecin]==0){
dfs(vecin,pas+1);
}
}
}
int main(){
fin>>n;
for(int i=1;i<=n;i++){
fin>>k[i];
}
for(int i=1;i<n;i++){
int pi,pj;
fin>>pi>>pj;
a[pi].push_back(pj);
}
dfs(1,0);
for(int i=1;i<=n;i++){
fout<<d[i]-1<<" ";
}
}