Cod sursa(job #2786239)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 20 octombrie 2021 16:23:03
Problema Cerere Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.51 kb
#include<bits/stdc++.h>
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
#define M 100005
vector<int> G[M];
int N,d[M],s[M],D[M],S[M],t,o,i,a,b;
void F(int k)
{
    S[++t]=k;
    if(s[k])
        D[k]=D[S[t-s[k]]]+1;
    for(auto j:G[k])
        F(j);
    --t;
}
int main()
{
    for(f>>N,i=1;i<=N;++i)
        f>>s[i];
    for(i=1;i<N;++i)
        f>>a>>b,G[a].push_back(b),d[b]=a;
    for(i=1;d[i];++i);
    for(F(i),i=1;i<=N;++i)
        g<<D[i]<<' ';
    return 0;
}