Cod sursa(job #2282893)

Utilizator TooHappyMarchitan Teodor TooHappy Data 14 noiembrie 2018 18:21:28
Problema Cerere Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>
 
using namespace std;
 
ifstream in("cerere.in");
ofstream out("cerere.out");

int main() {
    ios::sync_with_stdio(false); in.tie(0); out.tie(0);

    int n; in >> n;

    vector< int > v(n + 1);
    for(int i = 1; i <= n; ++i) {
        in >> v[i];
    }

    vector< int > tata(n + 1);
    for(int i = 1; i < n; ++i) {
        int a, b; in >> a >> b;
        tata[b] = a;
    }

    for(int i = 1; i <= n; ++i) {
        if(v[i] == 0) {
            out << v[i] << " ";
            continue;
        }

        int cnt = 0, ans = 0;
        int target = i;
        int newMonkey = i;
        do {
            newMonkey = target;
            cnt = 0;
            while(cnt < v[newMonkey]) {
                target = tata[target];
                cnt++;
            }
            ans++;
        } while(v[target] != 0);

        out << ans << " ";
    }

    in.close(); out.close();
 
    return 0;
}