Pagini recente » Cod sursa (job #2189915) | Cod sursa (job #564321) | Cod sursa (job #836388) | Cod sursa (job #1452435) | Cod sursa (job #1653595)
#include <iostream>
#include <fstream>
#include <vector>
#define nmax 100001
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
int gI[nmax],val[nmax],ord[nmax],n,x,contor,h,ord1[nmax];
vector <int> V[nmax];
void dfs(int nod){
ord[h]=nod;
h++;
if(!val[nod]){
ord1[nod]=0;
}else{
ord1[nod]=ord1[ord[h-val[nod]-1]]+1;
}
for(int i=0;i<V[nod].size();i++){
dfs(V[nod][i]);
}
h--;
}
int main()
{
f>>n;
for(int i=1;i<=n;i++){
f>>val[i];
}
int a,b;
for(int i=0;i<n-1;i++){
f>>a>>b;
gI[b]=1;
V[a].push_back(b);
}
for(int i=1;i<=n;i++) if(!gI[i]) dfs(i);
for(int i=1;i<=n;i++) g<<ord1[i]<<" ";
return 0;
}