Pagini recente » Cod sursa (job #2141332) | Cod sursa (job #941921) | Cod sursa (job #303413) | Cod sursa (job #2696925) | Cod sursa (job #1033642)
#include<stdio.h>
#include<vector>
#define INF 100001
using namespace std;
vector<int> graph[INF];
int k[INF],ras[INF];
int n;
void df(int nod,vector<int> q)
{
q.push_back(nod);
if(k[nod]>0)ras[nod]=ras[q[q.size()-k[nod-1]]]+1;
for(int i=0;i<graph[nod].size();++i)df(graph[nod][i],q);
q.pop_back();
}
int main()
{
freopen("cerere.in","r",stdin);
freopen("cerere.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;++i)scanf("%d",&k[i]);
for(int i=1;i<n;++i)
{
int a,b;
scanf("%d%d",&a,&b);
graph[a].push_back(b);
}
vector<int>q;
df(1,q);
for(int i=1;i<=n;++i)printf("%d ",ras[i]);
return 0;
}