Pagini recente » Cod sursa (job #1786065) | Cod sursa (job #1605517) | Cod sursa (job #1582082) | Cod sursa (job #772915) | Cod sursa (job #1442803)
#include<fstream>
#include<vector>
using namespace std;
int n, i, a, b, x;
int st[100002], t[100002], k[100002], d[100002];
vector<int> v[100002];
ifstream fin("cerere.in");
ofstream fout("cerere.out");
void dfs(int x, int niv){
st[niv] = x;
d[x] = d[ st[ niv - k[x] ] ] + 1;
for(int i = 0; i < v[x].size(); i++){
dfs(v[x][i], niv + 1);
}
}
int main(){
fin>> n;
for(i = 1; i <= n; i++){
fin>> k[i];
}
for(i = 1; i < n; i++){
fin>> a >> b;
t[b] = a;
v[a].push_back(b);
}
for(i = 1; i <= n; i++){
if(t[i] == 0){
x = i;
break;
}
}
dfs(x, 1);
for(i = 1; i <= n; i++){
fout<< d[i] - 1 <<" ";
}
return 0;
}