Cod sursa(job #1792418)

Utilizator razvan242Zoltan Razvan-Daniel razvan242 Data 30 octombrie 2016 14:07:21
Problema Cerere Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>

using namespace std;

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

const int NMAX = 1e5 + 1;

int n, t[NMAX];
int k[NMAX];

int main()
{
    fin >> n;
    for (int i = 1; i <= n; ++i)
        fin >> k[i];
    for (int i = 1, x, y; i < n; ++i) {
        fin >> x >> y;
        t[y] = x;
    }
    int cnt, curr, nr;
    for (int i = 1; i <= n; ++i) {
        if (k[i] == 0) {
            fout << "0 ";
            continue;
        }
        cnt = 0;
        curr = i;
        while (k[curr]) {
            ++cnt;
            nr = k[curr];
            for (int j = 1; j <= nr; ++j)
                curr = t[curr];
        }
        fout << cnt << ' ';
    }
    return 0;
}