Pagini recente » Cod sursa (job #382542) | Cod sursa (job #1243291) | Monitorul de evaluare | Cod sursa (job #1341668) | Cod sursa (job #3302650)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cerere.in"); //strudel
ofstream fout("cerere.out");
int n,i,a,b,j,nod,s,l,cop;
int k[100010],dp[100010][20];
int v[100010];
int main()
{
fin>>n;
for(i=1;i<=n;i++) fin>>k[i];
for(i=1;i<n;i++) fin>>a>>b,v[b]=a;
for(i=1;i<=n;i++) dp[i][0]=v[i];
for(j=1;j<20;j++)
for(i=1;i<=n;i++)
dp[i][j]=dp[dp[i][j-1]][j-1];
//print
// for(i=1;i<=n;i++,fout<<'\n')
// for(j=0;j<20;j++)
// fout<<dp[i][j]<<" ";
for(i=1;i<=n;i++){
for(nod=i,s=0;k[nod]!=0;s++){
for(cop=k[nod],l=0;cop>0;l++,cop/=2) if(cop%2==1) nod=dp[nod][l];
}
fout<<s<<" ";
}
return 0;
}