Pagini recente » Cod sursa (job #1178373) | Cod sursa (job #1932812) | Cod sursa (job #2985070) | Cod sursa (job #2641141) | Cod sursa (job #308321)
Cod sursa(job #308321)
//cik era bula pe moarte , si ii zice moartea:"Da-te ba jos de pe mine!"
#include <iostream>
#define maxn 100001
using namespace std;
struct nod {int inf; nod *urm;} *arb[maxn];
int tata[maxn],st[maxn],sol[maxn];
int n,rad,sir[maxn];
void baga(int x, int y)
{
nod *q=new nod;
q->inf=y;
q->urm=arb[x];
arb[x]=q;
}
void citire()
{
int x,y;
freopen("cerere.in","r",stdin);
freopen("cerere.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&sir[i]);
for(int i=1;i<n;i++)
{
scanf("%d%d",&x,&y);
baga(x,y);
tata[y]=x;
}
for(int i=1;i<n;i++)
if(tata[i]==0)
rad=i;
}
void dfs(int x,int niv)
{
st[niv]=x;
sol[x]=sol[st[niv-sir[x]]]+1;
for(nod *q=arb[x];q;q=q->urm)
dfs(q->inf,niv+1);
}
void afisare()
{
for(int i=1;i<=n;i++)
printf("%d ",sol[i]-1);
}
int main()
{
citire();
dfs(rad,1);
afisare();
return 0;
}