Pagini recente » Cod sursa (job #2189295) | Cod sursa (job #513817) | Cod sursa (job #827593) | Cod sursa (job #529819) | Cod sursa (job #2158370)
#include<bits/stdc++.h>
#define NMAX 100010
using namespace std;
int n,start;
vector<int>V[NMAX];
int D[NMAX], k[NMAX], a[NMAX];
void DFS(int x, int h) {
if (!k[x]) a[h]=-1;
D[x] = a[h-k[x]]+1;
a[h]=D[x];
for (int i=0; i<V[x].size(); i++)
DFS(V[x][i],h+1);
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
ifstream cin("cerere.in");
ofstream cout("cerere.out");
cin>>n;
for (int i=1; i<=n; i++) {
cin>>k[i];
}
for (int i=1; i<n; i++) {
int x,y; cin>>x>>y;
V[x].push_back(y); D[y]++;
}
for (int i=1; i<=n; i++) {
if (!D[i]) start=i;
D[i]=0;
}
DFS(start,1);
for (int i=1; i<=n; i++) cout<<D[i]<<" ";
return 0;
}