Pagini recente » Cod sursa (job #1566303) | Cod sursa (job #664930) | Cod sursa (job #510726) | Cod sursa (job #1722900) | Cod sursa (job #196557)
Cod sursa(job #196557)
#include<stdio.h>
#include<string.h>
#define N 100005
struct list{
int val;
list *fin;
}*p[N+5];
int n, cer[N+5],st[N+5],sol[N+5],fiu[N+5];
void funct(int x,int k){
st[k]=x;
if(cer[x]!=0)
sol[x]=1+sol[st[k-cer[x]]];
for(list *p1=p[x];p1!=NULL;p1=p1->fin)
funct(p1->val,k+1);
}
int main(){
int var1,var2,i;
list *p1;
freopen("cerere.in","r",stdin);
freopen("cerere.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;++i)
scanf("%d",&cer[i]);
for(i=1;i<=n;++i){
scanf("%d %d",&var1,&var2);
fiu[var2]=var1;
p1 = new list;
p1->val = var2;
p1->fin = p[var1];
p[var1] = p1;
}
for(i=1;i<=n;++i)
if( fiu[i]==0 ){
funct(i,1);
break;
}
for(i=1;i<=n;++i)
printf("%d ",sol[i]);
printf("\n");
fclose(stdin);
fclose(stdout);
return 0;
}