Cod sursa(job #2358696)

Utilizator Gl0WCula Stefan Gl0W Data 28 februarie 2019 11:22:20
Problema Cerere Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
#include <vector>

using namespace std;

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

int n, v[100005], ve[100005], stiva[100005], d[100005], x, y, t[100005];
vector <int> L[100005];

void dfs(int nod, int pas){
    stiva[pas] = nod;
    ve[nod] = 1;
    d[nod] = 1 + d[stiva[pas - v[nod]]];
    for(int i = 0; i < L[nod].size(); i++){
        int vecin = L[nod][i];
        if(ve[vecin] == 0){
            dfs(vecin, pas + 1);
        }
    }
}

int main()
{
    fin>>n;
    for(int i = 1; i <= n; i++){
        fin>>v[i];
    }
    for(int i = 1; i < n; i++){
        fin>>x>>y;
        L[x].push_back(y);
        L[y].push_back(x);
    }
    int start;
    for(int i = 1; i < n; i++){
        if(t[i] == 0){
            start = i;
            break;
        }
    }
    dfs(start, 0);
    for(int i = 1; i <= n; i++){
        fout<<d[i] - 1<<" ";
    }
    return 0;
}