Cod sursa(job #2791590)

Utilizator cezar.balutaCezar Baluta cezar.baluta Data 30 octombrie 2021 20:03:51
Problema Cerere Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

const int N=100005;
vector<int> a[N+1];
int stram[N+1];
int stramos[N+1];
int rezultat[N];
int cnt=1;
int c=0;

void parcurgere(int x){
    stram[cnt]=x;
    if(stramos[x]!=0){
        int str=stram[cnt-stramos[x]];
      //cout<<x<<" "<<str<<" "<<c<<"\n";
       // cout<<x<<" "<<cnt<<" "<<stramos[x]<<" "<<st<<"\n";
        rezultat[x]=rezultat[str]+1;
    }
    int copie_cnt=cnt;
    cnt++;
    for(auto y:a[x]){
        parcurgere(y);
    }
    cnt--;
   // c+=cc;
}

int main() {
    ifstream in("cerere.in");
    ofstream out("cerere.out");
    int n;
    in>>n;
    for(int i=1;i<=n;i++){
        in>>stramos[i];
    }
    int x,y;
    for(int i=1;i<n;i++){
        in>>x>>y;
        a[x].push_back(y);
    }
    int w=1;
    parcurgere(1);
    for(int i=1;i<=n;i++){
        out<<rezultat[i]<<" ";
    }
    return 0;
}