Pagini recente » Cod sursa (job #3165448) | Cod sursa (job #1093191) | Cod sursa (job #2554917) | Cod sursa (job #2483723) | Cod sursa (job #2544490)
#include <bits/stdc++.h>
#define NMAX 100001
using namespace std;
string file="cerere";
ifstream fin(file+".in");
ofstream fout(file+".out");
int n,m;
int tata[NMAX],k[NMAX];
int cnt;
void dad(int x,int &cnt,int y)
{
do{
for(int i=1;i<=k[y];i++) x=tata[x];
cnt++;
if(k[x]==0) return ;
else{
y=x;
}
}while(k[x]);
}
int main()
{
int i,x,y;
fin>>n;
for(i=1;i<=n;i++)
fin>>k[i];
for(i=1;i<n;i++){
fin>>x>>y;
tata[y]=x;
}
for(i=1;i<=n;i++){
if(!k[i]) fout<<"0 ";
else{
cnt=0;
dad(i,cnt,i);
fout<<cnt<<" ";
}
}
return 0;
}