Pagini recente » Cod sursa (job #2626772) | Cod sursa (job #300970) | Cod sursa (job #1459803) | Cod sursa (job #2075379) | Cod sursa (job #2391224)
#include <fstream>
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
int n,x,y,t[100001],k[100001],r[100001],nr;
bool u[100001];
void rez(int x) {
u[x] = 1;
if (!k[x]) r[x] = 0;
else {
int p = k[x];
y = x;
while (p--) y = t[y];
if (!u[y]) rez(y);
else nr += r[y] + 1;
r[x] = nr;
}
nr++;
}
int main()
{
f >> n;
for (int i = 1; i <= n; ++i) f >> k[i];
for (int i = 1; i < n; ++i) {
f >> x >> y;
t[y] = x;
}
for (int i = 1; i <= n; ++i) {
nr = 0;
if (!u[i]) rez(i);
}
for (int i = 1; i <= n; ++i) g << r[i] << ' ';
g << endl;
return 0;
}