Pagini recente » Cod sursa (job #3139122) | Cod sursa (job #2116173) | Cod sursa (job #860222) | Cod sursa (job #2592119) | Cod sursa (job #341865)
Cod sursa(job #341865)
#include<cstdio>
#define N 100001
struct cereri{int s,t,c;}v[N];
int n,num;
void citire()
{
freopen("cerere.in","r",stdin);
freopen("cerere.out","w",stdout);
scanf("%d",&n);
for (int i=1; i<=n; ++i)
scanf("%d",&v[i].t);
for (int i=1; i<n; ++i)
{
int x,y;
scanf("%d%d",&x,&y);
v[y].s=x;
}
}
void drum(int i)
{
if (!v[i].t||!v[i].s)
return ;
int k=i;
i=v[i].c;
++num;
drum(i);
}
void gasesc(int x)
{
int i=x;
for (int j=1; j<=v[x].t; ++j)
i=v[i].s;
v[x].c=i;
}
void maimute_inteligente()
{
for(int i=1; i<=n; ++i)
if (v[i].t)
gasesc(i);
for (int i=1; i<=n; ++i)
{
if (!v[i].t)
printf("0 ");
else
{
num=0;
drum(i);
printf("%d ",num);
}
}
}
void afis()
{
for (int i=1; i<=n; ++i)
printf("%d %d %d %d\n",i,v[i].s,v[i].t,v[i].c);
}
int main()
{
citire();
maimute_inteligente();
//afis();
return 0;
}