Cod sursa(job #3333635)

Utilizator FRD233Fodor Rares-Costin FRD233 Data 14 ianuarie 2026 17:39:14
Problema Cerere Scor 100
Compilator cpp-64 Status done
Runda Teme Pregatire ACM Unibuc 2013 Marime 0.74 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
struct Nod{ int nod;
            Nod *leg;
          }*L[100001];
int k[100001],sol[100001],t[100001],n,x,y;
int sef[100001];
void DF(int nod,int niv)
{   sef[niv]=nod;
    if(k[nod]==0) sol[nod]=0;
    else sol[nod]=sol[sef[niv-k[nod]]]+1;
    Nod *p;
    for(p=L[nod];p;p=p->leg) DF(p->nod,niv+1);
}
int main()
{   f>>n;
    for(int i=1;i<=n;i++) f>>k[i];
    for(int i=1;i<n;i++)
    {   f>>x>>y;
        Nod *p;
        p=new Nod;
        p->nod=y,p->leg=L[x];
        L[x]=p;
        t[y]=x;
    }
    int rad=1;
    while(t[rad]) rad++;
    DF(rad,1);
    for(int i=1;i<=n;i++) g<<sol[i]<<" ";
    g<<'\n';
    return 0;
}