Pagini recente » Cod sursa (job #2846748) | Cod sursa (job #2176650) | Cod sursa (job #2961752) | Cod sursa (job #1318985) | Cod sursa (job #562470)
Cod sursa(job #562470)
#include <fstream>
#include <vector>
using namespace std;
#define DIM 100005
ifstream fi ("cerere.in");
ofstream fo ("cerere.out");
int N, K[DIM], C[DIM], S[DIM];
vector <int> F[DIM];
void dfs (int n, int niv)
{
S[niv] = n;
if (K[n])
C[n] = C[S[niv - K[n]]] + 1;
for (int i = 0; i < F[n].size(); i++)
dfs (F[n][i], niv + 1);
}
int main ()
{
fi >> N;
for (int i = 1; i <= N; i++)
fi >> K[i];
for (int i = 1, a, b; i <= N - 1; i++)
{
fi >> a >> b;
F[a].push_back (b);
}
dfs (1, 1);
for (int i = 1; i <= N; i++)
fo << C[i] << ' ';
return 0;
}