Pagini recente » Cod sursa (job #584751) | Cod sursa (job #1421853) | Cod sursa (job #151395) | Cod sursa (job #496938) | Cod sursa (job #554131)
Cod sursa(job #554131)
#include <fstream>
#include <vector>
using namespace std;
#define Nmax 100050
int K[Nmax], S[Nmax], viz[Nmax], sol[Nmax], n, i, x, y;
vector <int> A[Nmax];
void DFS(int nod, int niv)
{
int i;
S[niv] = nod;
if (K[nod])
sol[nod] = sol[S[niv - K[nod]]] + 1;
for (i = 0; i < (int)A[nod].size(); i++)
DFS(A[nod][i], niv + 1);
}
int main()
{
ifstream fin("cerere.in");
fin >> n;
for (i = 1; i <= n; i++)
fin >> K[i];
for (i = 1; i < n; i++)
{
fin >> x >> y;
A[x].push_back(y);
viz[y] = 1;
}
for (i = 1; i <= n; i++)
if (!viz[i])
DFS(i, 1);
ofstream fout("cerere.out");
for (i = 1; i <= n; i++)
fout << sol[i] << " ";
return 0;
}