Pagini recente » Cod sursa (job #2061768) | Cod sursa (job #1061090) | Cod sursa (job #1535891) | Cod sursa (job #282775) | Cod sursa (job #774034)
Cod sursa(job #774034)
#include<fstream>
#include<vector>
#include<cstring>
using namespace std;
int i,j,n,m,x,y,g[100001],s[100001],tata[100001],nr;
vector<int> a[100001];
int viz[100001];
int det(int x)
{
if(g[x])
++nr,det(g[x]);
return nr;
}
int main()
{
freopen("cerere.in","r",stdin);
freopen("cerere.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;++i)
scanf("%d",&s[i]);
for(i=1;i<n;++i)
{
scanf("%d%d",&x,&y);
a[y].push_back(x);
tata[y]=x;
}
for(i=1;i<=n;++i)
if(s[i])
{
x=i;
for(j=1;j<=s[i];++j)
x=tata[x];
g[i]=x;
}
for(i=1;i<=n;++i)
nr=0,printf("%d ",det(i));
return 0;
}