Pagini recente » Cod sursa (job #1742371) | Cod sursa (job #1636141) | Cod sursa (job #429077) | Cod sursa (job #168944) | Cod sursa (job #2257688)
#include <fstream>
#include <vector>
#include <cstring>
#define maxn 100002
using namespace std;
ifstream fin("cerere.in");
ofstream fout("cerere.out");
int n, t[maxn], dp[maxn], v[maxn], vf;
int dfs(int nod)
{
if(!v[nod])
{
return 0;
}
int copie=v[nod],nod1=nod;
while(copie--)
{
nod1=t[nod1];
}
if(dp[nod1]!=-1)
{
return dp[nod1]+1;
}
return dfs(nod1)+1;
}
int main()
{
fin>>n;
for(int i=1; i<=n; i++)
{
fin>>v[i];
dp[i]=-1;
}
for(int i=1, x, y; i<n; i++)
{
fin>>x>>y;
t[y]=x;
}
/*for(int i=1; i<=n; i++)
{
if(!t[i])
{
vf=i;
break;
}
}*/
for(int i=1; i<=n; i++)
{
dp[i]=dfs(i);
fout<<dp[i]<<' ';
}
return 0;
}