Cod sursa(job #2711493)

Utilizator Ionut2791Voicila Ionut Marius Ionut2791 Data 24 februarie 2021 11:09:18
Problema Cerere Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>
#define fin cin
#define ll long long
#define sz(x) (int)(x).size()
#define debug(v,n) for (int i = 1; i <= (n); ++i) cout << v[i] << " ";
#define next cout << '\n'
using namespace std;

const int N = 1e5 + 5;
int n, k[N], ans[N];
bool done[N];
vector<int> graf[N], in;

void dfs(int nod) {
    in.push_back(nod);
    ans[nod] = ans[in[(sz(in) - 1) - k[nod]]] + 1;

    for (int to : graf[nod]) {
        dfs(to);
    }

    in.pop_back();
}

int main() {
    ifstream fin("date.in.txt");
    //ifstream fin("cerere.in");
    //ofstream fout("cerere.out");
    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;
        graf[a].push_back(b);
    }

    dfs(1);

    for (int i = 1; i <= n; ++i)
        fout << ans[i] - 1<< " ";

    return 0;
}