Pagini recente » Cod sursa (job #1487908) | Cod sursa (job #1030665) | Cod sursa (job #2817147) | Cod sursa (job #1556433) | Cod sursa (job #2313708)
#include <fstream>
#include <vector>
using namespace std;
ifstream in("cerere.in");
ofstream out("cerere.out");
int n, k[100001], nr, rez;
vector <int> Muchii[100001];
void DFS(int nod)
{
int vecin;
++rez;
for (int i = 0; i < Muchii[nod].size(); ++i)
{
vecin = Muchii[nod][i];
--nr;
if (nr == 0)
nr = k[vecin];
if (nr != 0 || Muchii[vecin].size() == 0)
DFS(vecin);
}
}
void citire()
{
int x, y;
in >> n;
for (int i = 1; i <= n; ++i)
in >> k[i];
for (int i = 1; i <= n - 1; ++i)
{
in >> x >> y;
Muchii[y].push_back(x);
}
for (int i = 1; i <= n; ++i)
{
nr = k[i];
rez = 0;
if (nr == 0)
out << 0 << " ";
else
{
DFS(i);
out << rez - 1 << " ";
}
}
}
int main()
{
citire();
return 0;
}