Pagini recente » Cod sursa (job #925855) | Cod sursa (job #811920) | Cod sursa (job #3198197) | Cod sursa (job #2923939) | Cod sursa (job #1108008)
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
int const N=100005;
//vector<int> graph[N];
//bool use[N];
int k[N],t[N];
int n;
/*
void dfs(int x)
{
use[x]=true;
vector<int>::iterator it;
for(it=graph[x].begin(); it!=graph[x].end(); it++)
{
if(!use[*it])
dfs(*it);
}
}
*/
int main()
{
ifstream fin("cerere.in");
ofstream fout("cerere.out");
fin>>n;
for(int i=1; i<=n; i++)
fin>>k[i];
for(int i=1; i<n; i++)
{
int x,y;
fin>>x>>y;
//graph[x].push_back(y);
t[y]=x;
}
/*
for(int i=1; i<=n; i++)
if(!use[i])
dfs(i);*/
for(int i=1; i<=n; i++)
{
int pas=0;
int T=i;
while(k[T])
{
pas++;
for(int p=1; p<=k[i]; p++)
T=t[T];
}
fout<<pas<<" ";
}
return 0;
}