Pagini recente » Cod sursa (job #2821513) | Cod sursa (job #1430036) | Cod sursa (job #267405) | Cod sursa (job #1296710) | Cod sursa (job #392455)
Cod sursa(job #392455)
# include <fstream.h>
ifstream f ("cerere.in");
ofstream g ("cerere.out");
int c[100005],t[100000],v[100000],x,y,i,j,n,k;
struct nod
{
int info;
nod *urm;
}*p,*a[100005];
void df (int x)
{
nod *p;
k++;
v[k]=x;
if (c[x]!=0)
t[x]=v[k-c[x]];
p=a[x];
while (p)
{
df(p->info);
p=p->urm;
}
k--;
}
int main ()
{
f>>n;
for (i=1;i<=n;i++)
{ f>>c[i];
t[y]=x;
}
for (i=1;i<n;i++)
{
f>>x>>y;
p=new nod;
p->info=y;
p->urm=a[x];
a[x]=p;
}
for (i=1;i<=n;i++)
if (t[i]==0)
{
x=i;
break;
}
df (x);
for (i=1;i<=n;i++)
{
k=0;
if (c[i])
{
x=t[i];
k++;
while (t[x])
{
x=t[x];
k++;
}
}
g<<k<<" ";
}
return 0;
}