Cod sursa(job #2398318)

Utilizator AndreiDeltaBalanici Andrei Daniel AndreiDelta Data 5 aprilie 2019 12:27:29
Problema Cerere Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>
#define Dim 100005
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
int N,A[Dim],a,b;
int G[Dim];
bool viz[Dim];

vector <int> V[Dim],B,L;

void DFS(int nod)
{
    B.push_back(nod);
    int lenght=B.size()-1;
    G[nod]=G[B[lenght-A[nod]]]+1;
    viz[nod]=1;
    for(unsigned int i=0;i<V[nod].size();i++)
    {
        int vecin=V[nod][i];
        if(!viz[vecin])
        {
            DFS(vecin);
            B.pop_back();
        }
    }
}

int main()
{
    f>>N;
    for(int i=1;i<=N;i++) f>>A[i];
    for(int i=1;i<N;i++)
    {
        f>>a>>b;
        V[a].push_back(b);
        V[b].push_back(a);
    }
    DFS(1);
    for(int i=1;i<=N;i++) g<<G[i]-1<<" ";
   // L.push_back(1);  L.push_back(2);  L.push_back(3);  L.push_back(4);
    //cout<<L.size();
    return 0;
}