Cod sursa(job #3313100)

Utilizator busoistefanBusoi Radulescu Stefan busoistefan Data 2 octombrie 2025 09:42:27
Problema Cerere Scor 0
Compilator cpp-64 Status done
Runda Teme Pregatire ACM Unibuc 2013 Marime 0.75 kb
#include <fstream>
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
vector<int> stack;

vector<int> copii[100007];
int ans[100007];
int nrK[100007];
void bk(int id) {
    stack.push_back(id);
    if (nrK[id]==0) {
        ans[id]=0;
    }else {
        ans[id]=ans[stack[stack.size()-nrK[id]-1]]+1;
    }
    for (int i:copii[id]) {
        bk(i);
    }
    stack.pop_back();
}
int main() {
    int n;
    f>>n;
    for (int i=1;i<=n;i++) {
        f>>nrK[i];
    }
    for (int j=2;j<=n;j++) {
        int x,y;
        f>>x>>y;
        copii[x].push_back(y) ;
    }
    bk(1);

    for (int i=1;i<=n;i++)
        g<<ans[i]<<" ";
    return 0;
}