Cod sursa(job #3306965)

Utilizator LucaWalucaLuca Munteanu LucaWaluca Data 15 august 2025 17:03:36
Problema Cerere Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("cerere.in");
ofstream out("cerere.out");
int v[100005],detcor[100005],tat;
vector<int> parinti;
bool viz[100005];
vector<vector<int>> vec(100005);
void rez(int nod, int dif)
{
    //cout<<nod<<" ";
    viz[nod]=true;
    parinti.push_back(nod);
    detcor[nod]=detcor[parinti[dif-v[nod]]]+1;
    for(auto it:vec[nod])
    {
        if(!viz[it])
            rez(it,dif+1);
    }
    parinti.pop_back();
}
int main()
{
    int n,a,b;
    in>>n;
    tat=n*(n+1)/2;
    for(int i=1;i<=n;i++)
        in>>v[i];
    for(int i=1;i<n;i++)
    {
        in>>a>>b;
        tat-=b;
        vec[a].push_back(b);
    }
    rez(tat,0);
    for(int i=1;i<=n;i++)
        out<<detcor[i]-1<<" ";
    return 0;
}