Pagini recente » Cod sursa (job #38338) | Cod sursa (job #2774003) | Cod sursa (job #1340910) | Cod sursa (job #2601709) | Cod sursa (job #2398318)
#include <bits/stdc++.h>
#define Dim 100005
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
int N,A[Dim],a,b;
int G[Dim];
bool viz[Dim];
vector <int> V[Dim],B,L;
void DFS(int nod)
{
B.push_back(nod);
int lenght=B.size()-1;
G[nod]=G[B[lenght-A[nod]]]+1;
viz[nod]=1;
for(unsigned int i=0;i<V[nod].size();i++)
{
int vecin=V[nod][i];
if(!viz[vecin])
{
DFS(vecin);
B.pop_back();
}
}
}
int main()
{
f>>N;
for(int i=1;i<=N;i++) f>>A[i];
for(int i=1;i<N;i++)
{
f>>a>>b;
V[a].push_back(b);
V[b].push_back(a);
}
DFS(1);
for(int i=1;i<=N;i++) g<<G[i]-1<<" ";
// L.push_back(1); L.push_back(2); L.push_back(3); L.push_back(4);
//cout<<L.size();
return 0;
}