Cod sursa(job #2360105)

Utilizator Bogdan_BuzatuBuzatu Bogdan Mihai Bogdan_Buzatu Data 1 martie 2019 12:51:09
Problema Cerere Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("cerere.in");
ofstream fout("cerere.out");
vector<int>a[100100];
int stiva[100100],v[100100],d[100100],k[100100],n,t[100100],start;
void dfs(int nod,int pas){
    v[nod]=1;
    stiva[pas]=nod;
    d[nod]=1+d[stiva[pas-k[nod]]];
    for(int i=0;i<a[nod].size();i++){
        int vecin=a[nod][i];
        if(v[vecin]==0){
            dfs(vecin,pas+1);
        }
    }





}
int main(){
    fin>>n;
    for(int i=1;i<=n;i++){
        fin>>k[i];
    }
    for(int i=1;i<n;i++){
        int pi,pj;
        fin>>pi>>pj;
        a[pi].push_back(pj);
        a[pj].push_back(pi);
        t[pj]=pi;

    }
    for(int i=1;i<n;i++){
        if(t[i]==0){
            start=i;
            break;
        }
    }
     dfs(start,1);
    for(int i=1;i<=n;i++){
       fout<<d[i]-1<<" ";
    }


}