Cod sursa(job #1126369)

Utilizator Theorytheo .c Theory Data 26 februarie 2014 22:53:23
Problema Cerere Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream>

using namespace std;

ifstream fin ("cerere.in");
ofstream fout ("cerere.out");

const int NMAX = 100009;

int N; int T[NMAX]; int K[NMAX]; int T2[NMAX];

int main() {

    fin >> N;
    for(int i = 1; i <= N; ++i)
        fin >> K[i];
    for(int i = 1; i < N; ++i) {
        int a, b; fin >> a >> b;
        T[b] = a;
    }

    for(int i = 1; i <= N; ++i) {
        int a = i;
        for(int j = K[i]; j; j--)
            a = T[a];
        T2[i] = a;
    }

    for(int i = 1; i <= N; ++i) {
        int sol = 0, a = i;
        while(T2[a] != a) ++sol, a = T2[a];
        fout << sol <<" ";
    }
    return 0;
}