Pagini recente » Cod sursa (job #318313) | Cod sursa (job #1899209) | Cod sursa (job #1532104) | Cod sursa (job #2706599) | Cod sursa (job #1740526)
#include <fstream>
#include <cstdio>
#include <iostream>
#include <vector>
#include <queue>
#include <cstring>
#include <set>
#include <algorithm>
#define pb push_back
#define NMAX 100005
#define INF 0x3f3f3f3f
using namespace std;
ifstream fin("cerere.in");
ofstream fout("cerere.out");
int k[NMAX],dist[NMAX],st[NMAX],p[NMAX],vf;
vector<int> v[NMAX];
void DFS(int x, int depth) {
st[depth]=x;
dist[x]=dist[st[depth-k[x]]]+1;
for(int i=0;i<v[x].size();++i)
DFS(v[x][i], depth+1);
}
int main() {
int n,i,x,y;
fin>>n;
for(i=1;i<=n;++i) fin>>k[i];
for(i=1;i<n;++i) {
fin>>x>>y;
p[y]=x;
v[x].pb(y);
}
x=1;
while(p[x]!=0) x=p[x];
DFS(x,1);
for(i=1;i<=n;++i) fout<<dist[i]-1<<' ';
return 0;
}