Cod sursa(job #2542170)

Utilizator alex_bb8Banilean Alexandru-Ioan alex_bb8 Data 9 februarie 2020 17:04:12
Problema Cerere Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("cerere.in");
ofstream g("cerere.out");


const int nmax=100002;

vector<int>G[nmax];
vector<int>S;
int n,d[nmax],fath[nmax],poz,sol[nmax];


void DFS(int node)
{


    S.push_back(node);

    if(d[node]!=0)
        sol[node]=sol[S[S.size()-1-d[node]]]+1;


    for(auto x:G[node])
        DFS(x);


    S.pop_back();
}

int main()
{

    f>>n;
    for(int i=1; i<=n; i++)
        f>>d[i];

    for(int i=1; i<n; i++)
    {
        int x,y;
        f>>x>>y;
        G[x].push_back(y);
        fath[y]=x;

    }

    for(int i=1; i<=n; i++)
        if(fath[i]==0)
        {
            poz=i;
            break;
        }

    DFS(poz);


    for(int i=1; i<=n; i++)
        g<<sol[i]<<" ";


    return 0;
}