Pagini recente » Cod sursa (job #2846717) | Cod sursa (job #483216) | Cod sursa (job #1400821) | Cod sursa (job #2876411) | Cod sursa (job #2983398)
#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 << ' ';
}
}
}