Cod sursa(job #2448282)

Utilizator Stefan_PiscuPiscu Stefan Constantin Stefan_Piscu Data 16 august 2019 14:52:35
Problema Cerere Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
#include <vector>

using namespace std;

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

struct nod{
              vector<int> v;
              int nr, k;
          }g[100003];

int s[100001], vf=0, n;

void dfs(int x=1)
{
    s[++vf]=x;
    {
        if(g[x].k) g[x].nr=g[s[vf-g[x].k]].nr+1;
        for(int i=0;i<g[x].v.size();++i) dfs(g[x].v[i]);
    }
    vf--;
}

int main()
{
    fin>>n;
    for(int i=1;i<=n;++i)
    {
        fin>>g[i].k;
        if(g[i].k==0) g[i].nr=0;
    }
    for(int i=2;i<=n;++i)
    {
        int x, y;
        fin>>x>>y;
        g[x].v.push_back(y);
    }
    dfs();
    for(int i=1;i<=n;++i) fout<<g[i].nr<<" ";
    fout<<"\n";
    return 0;
}