Cod sursa(job #2983398)

Utilizator TODEToderita Mihai TODE Data 22 februarie 2023 13:06:45
Problema Cerere Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
#include <vector>
#include <stdlib.h>
using namespace std;

ifstream in("cerere.in");
ofstream out("cerere.out");
const int N = 1e5;
int n_monke;
int monkeee[N + 1] , stramosi[N + 1];
void dfs(int x , int al_x_lea_stramos , int &nr_s_parcursi){
    if(al_x_lea_stramos == 0){
        nr_s_parcursi++;
        if(monkeee[x] == 0){
            return;
        }
        else{
            al_x_lea_stramos = monkeee[x];
            dfs(x , al_x_lea_stramos , nr_s_parcursi);
        }
    }
    else if(al_x_lea_stramos > 0){
        dfs(stramosi[x] , al_x_lea_stramos - 1 , nr_s_parcursi);
    }
}
int main(){
    in >> n_monke;
    for(int i = 1 ; i <= n_monke ; i++){
        in >> monkeee[i];
    }
    int x , y;
    while(in >> x >> y){
        stramosi[y] = x;
    }
    for(int i = 1 ; i <= n_monke ; i++){
        if(monkeee[i] == 0){
            out << 0 << ' ';
        }
        else{
            int nr_s_parcursi = 0;
            dfs(i , monkeee[i] , nr_s_parcursi);
            out << nr_s_parcursi << ' ';
        }
    }
}