Cod sursa(job #3364858)

Utilizator tmi26Teodor Stupariu tmi26 Data 12 septembrie 2026 15:24:32
Problema Cerere Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <bits/stdc++.h>
using namespace std;

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

const int nmax=100005;
int n,k[nmax],t[nmax],d[nmax],sol[nmax];
vector<int> g[nmax];

void dfs(int nod,int niv)
{
    d[niv]=nod;
    if(k[nod]) sol[nod]=sol[d[niv-k[nod]]]+1;

    for(int nxt:g[nod])
        dfs(nxt,niv+1);
}

int main()
{
    fin>>n;

    for(int i=1;i<=n;i++)
        fin>>k[i];

    for(int i=1;i<n;i++)
    {
        int x,y;
        fin>>x>>y;
        g[x].push_back(y);
        t[y]=x;
    }

    int root=1;
    while(t[root]) root++;

    dfs(root,1);

    for(int i=1;i<=n;i++)
        fout<<sol[i]<<' ';
}