Cod sursa(job #2076682)

Utilizator workwork work work Data 26 noiembrie 2017 22:11:58
Problema Cerere Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>

using namespace std;

ifstream F("cerere.in");
ofstream G("cerere.out");

int n, x, y, v[ 100005 ], ord[ 100005 ], t[ 100005 ], k;

int main()
{
    F >> n;
    for( int i = 1; i <= n; ++ i ) F >> v[ i ];
    for( int i = 1; i < n; ++ i )
        F >> x >> y, t[ y ] = x;
    for( int i = 1; i <= n; ++ i )
    {
        if( !v[ i ] )
        {
            ord[ i ] = 0;
            continue;
        }
        k = 0; x = i;
        while( k < v[ i ] )
        {
            x = t[ x ];
            k ++;
        }
        if( !v[ x ] )
        {
            ord[ i ] = 1;
            continue;
        }
        ord[ i ] = ord[ x ] + 1;
    }
    for( int i = 1; i <= n; ++ i ) G << ord[ i ] << " ";
    return 0;
}