Pagini recente » Cod sursa (job #2006691) | Cod sursa (job #2959814) | Cod sursa (job #1821392) | Cod sursa (job #2065032) | Cod sursa (job #39318)
Cod sursa(job #39318)
#include<stdio.h>
struct {int x,y;}a[100000];
int n,nr[100001],s[100001];
void DF(int vf)
{s[++s[0]]=vf;
if(nr[vf]!=0)
nr[vf]=nr[s[s[0]-nr[vf]]]+1;
for(int i=1;i<=n;i++)
if(a[i].x==vf) DF(a[i].y);
s[0]--;}
int main()
{freopen("cerere.in","r",stdin);
freopen("cerere.out","w",stdout);
scanf("%d",&n);
int i;
for(i=1;i<=n;i++) scanf("%d",&nr[i]);
for(i=1;i<n;i++){ scanf("%d %d",&a[i].x,&a[i].y);s[a[i].y]=1;}
for(i=1;i<=n;i++) if(!s[i]) break;
DF(i);
for(i=1;i<=n;i++) printf("%d ",nr[i]);
fclose(stdout);
return 0;}