Cod sursa(job #3306282)

Utilizator InformaticianInDevenire1Munteanu Mihnea Gabriel InformaticianInDevenire1 Data 9 august 2025 10:49:10
Problema Cerere Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>

using namespace std;

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

int k[100005];
vector <int> gr[100005];
int viz[100005];
int ans[100005];
vector <int> st;

void DFS(int node,int lvl){
    viz[node] = 1;
    st.push_back(node);
    ans[node] = ans[st[lvl-k[node]]]+1;
    for (auto vec:gr[node]){
        if (viz[vec]) continue;
        DFS(vec,lvl+1);
    }
    st.pop_back();
}

int main()
{
    int n;
    fin >> n;
    for (int i=1;i<=n;++i){
        fin >> k[i];
    }
    int root = n*(n+1)/2;
    for (int i=1;i<n;++i){
        int a,b;
        fin >> a >> b;
        root -= b;
        gr[a].push_back(b);
    }
    DFS(root,0);
    for (int i=1;i<=n;++i){
        fout << ans[i]-1 << ' ';
    }
    return 0;
}