Cod sursa(job #3282393)

Utilizator UpgradeStrikeMurgilas Mihai-Rares UpgradeStrike Data 5 martie 2025 15:09:13
Problema Cerere Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#include <vector>

using namespace std;
ifstream in("cerere.in");
ofstream out("cerere.out");
const int CT=100001;
int v[CT],/*s[CT],*/d[CT],r[CT];
bool rad[CT];
int n;
vector <int> s[CT];
void sbp(int i,int dr)
{
    d[dr]=i;
    if(v[i]==0)
        r[i]=0;
    else
        r[i]=r[d[dr-v[i]]]+1;
    for(auto j: s[i])
        sbp(j,dr+1);
    /*
    for(int j=1;j<=n;j++)
        if(s[j]==i)
            sbp(j,dr+1);
    */
}
int main()
{
    in>>n;
    for(int i=1;i<=n;i++)
        in>>v[i];
    for(int i=1;i<n;i++)
    {
        int a,b;
        in>>a>>b;
        //s[b]=a;
        r[i]=-1;
        rad[b]=1;
        s[a].push_back(b);
    }
    r[n]=-1;
    int l=1;
    while(rad[l])
        l++;
    sbp(l,1);
    for(int i=1;i<=n;i++)
        out<<r[i]<<' ';
    return 0;
}