Pagini recente » Cod sursa (job #3362088) | Cod sursa (job #3362062) | Cod sursa (job #3362090) | Cod sursa (job #3362231) | Cod sursa (job #3362046)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("cerere.in");
ofstream fout("cerere.out");
int salt[100001];
int rez[100001];
vector <int> stk;
void dfs(int node, vector <vector<int>> &fii) {
stk.push_back(node);
if (salt[node]>0) {
rez[node] = rez[stk[stk.size()-salt[node]-1]]+1;
}else {
rez[node] = 0;
}
for (int i=0;i<fii[node].size();i++) {
dfs(fii[node][i],fii);
}
stk.pop_back();
}
int main() {
int n;
fin >> n;
vector <vector <int>> fii(n+1);
for (int i=1;i<=n;i++) {
fin >> salt[i];
}
for (int i=1;i<=n-1;i++) {
int a,b;
fin >> a >> b;
fii[a].push_back(b);
}
dfs(1,fii);
for (int i=1;i<=n;i++) {
fout << rez[i] << " ";
}
return 0;
}