Pagini recente » Cod sursa (job #943385) | Cod sursa (job #1515572) | Cod sursa (job #537914) | Cod sursa (job #1919795) | Cod sursa (job #1258133)
# include <fstream>
using namespace std ;
ifstream in ( "cerere.in" ) ;
ofstream out ( "cerere.out" ) ;
int n , k [ 100002 ] , t [ 100002 ] , sol [ 100002 ] ;
void read ( ) {
in >> n ;
for ( int i = 1 ; i <= n ; ++ i ) {
in >> k [ i ] ;
}
for ( int i = 1 , a , b ; i <= n - 1 ; ++ i ) {
in >> a >> b ;
t [ b ] = a ;
}
}
void writeanswer ( ) {
for ( int i = 1 ; i <= n ; ++ i ) {
if ( k [ i ] == 0 ) {
out << "0 " ;
continue ;
}
int ans = i , cnt = 0 ;
while ( k [ ans ] != 0 && ! sol [ ans ] ) {
++ cnt ;
int y = ans ;
for ( int h = 1 ; h <= k [ ans ] ; ++ h ) {
y = t [ y ] ;
}
ans = y ;
}
if ( ! sol [ ans ] ) {
out << cnt << " " ;
sol [ i ] = cnt ;
continue ;
}
out << cnt + sol [ ans ] << " " ;
sol [ i ] = cnt + sol [ ans ] ;
}
}
int main ( ) {
read ( ) ;
writeanswer ( ) ;
}