Pagini recente » Cod sursa (job #1885683) | Cod sursa (job #563974) | Cod sursa (job #1366590) | Cod sursa (job #1490227) | Cod sursa (job #196555)
Cod sursa(job #196555)
#include<stdio.h>
#include<string.h>
#define N 1005
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;
}