Pagini recente » Cod sursa (job #533833) | Cod sursa (job #3333634) | Cod sursa (job #180571) | Cod sursa (job #3321186) | Cod sursa (job #3321185)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
// Functie recursiva care calculeaza numarul de maimute prin care trece cererea
int calculeaza_traversare(int i, const vector<int>& K) {
if (K[i - 1] == 0) { // Maimuta poate rezolva cererea
return 0;
} else {
return 1 + calculeaza_traversare(K[i - 1], K); // Cererea merge mai departe la stramos
}
}
int main() {
ifstream input("cerere.in");
ofstream output("cerere.out");
// Citirea datelor de intrare
int N;
input >> N;
vector<int> K(N);
for (int i = 0; i < N; ++i) {
input >> K[i];
}
// Rezultatele pentru fiecare maimuta
vector<int> sol(N);
// Calculam pentru fiecare maimuta
for (int i = 0; i < N; ++i) {
sol[i] = calculeaza_traversare(i + 1, K); // i + 1 pentru a corecta indexarea
}
// Scriem rezultatele in fisierul de iesire
for (int i = 0; i < N; ++i) {
output << sol[i] << " ";
}
output << endl;
input.close();
output.close();
return 0;
}