Pagini recente » Cod sursa (job #1044926) | Cod sursa (job #2254782) | Cod sursa (job #2415481) | Cod sursa (job #2971485) | Cod sursa (job #1268668)
#include <fstream>
using namespace std;
ifstream is("cerere.in");
ofstream os("cerere.out");
int k[100001];
int kn[100001];
int n;
int t[100001];
int cnt;
int ta;
void Find(int x);
int main()
{
is >> n;
for ( int i = 1; i <= n; ++i )
is >> k[i];
int x, y;
for ( int i = 1; i < n; ++i )
{
is >> x >> y;
t[y] = x;
}
for ( int i = 2; i <= n; ++i )
{
cnt = 0;
if ( k[i] )
{
ta = i;
Find(i);
kn[i] = cnt;
}
}
for ( int i = 1; i <= n; ++i )
os << kn[i] << ' ';
is.close();
os.close();
return 0;
}
void Find(int x)
{
if ( k[x] == 0 )
return;
for ( int i = 1; i <= k[x]; ++i )
ta = t[ta];
++cnt;
Find(ta);
}