Pagini recente » Cod sursa (job #319774) | Cod sursa (job #588) | Cod sursa (job #154335) | Cod sursa (job #1869911) | Cod sursa (job #2094075)
#include <fstream>
#include <vector>
#define VAL 100005
using namespace std;
ifstream fin("cerere.in");
ofstream fout("cerere.out");
int N, K[VAL], i, j;
int A, B, ans[VAL];
int st[VAL], top, stram;
vector <int> G[VAL];
void DFS(int nod)
{
vector <int> :: iterator it;
st[++top]=nod;
for (it=G[nod].begin(); it!=G[nod].end(); it++)
{
stram=st[top-K[*it]+1];
if (K[*it]>0)
ans[*it]=ans[stram]+1;
DFS(*it);
top--;
}
}
int main()
{
fin >> N;
for (i=1; i<=N; i++)
fin >> K[i];
for (i=1; i<N; i++)
{
fin >> A >> B;
G[A].push_back(B);
}
DFS(1);
for (i=1; i<=N; i++)
fout << ans[i] << " ";
fin.close();
fout.close();
return 0;
}