Cod sursa(job #965594)

Utilizator costinbanuCostin Banu costinbanu Data 24 iunie 2013 11:30:48
Problema Cerere Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<fstream>
using namespace std;

int v[100002], tati[100002], rez[100002], n, a, b;

int mame(int k, int m){
    if (tati[m] == 0 || k == 0) return m;
    else return mame(k-1, tati[m]);
}

int cereri(int m){
    if (rez[m] != 0) return rez[m];
    if (v[m] == 0) return 0;
    else return 1 + cereri(mame(v[m], m));
}

int main(){
    ifstream in("cerere.in");
    ofstream out("cerere.out");
    if (in && out){
        in>>n;
        for(int i = 1; i <= n; i++)
            in>>v[i];
        for(int i = 0; i < n; i++)
            in>>a>>b,  tati[b] = a;
        for(int i = 1; i <= n; i++)
            rez[i] = cereri(i), out<<rez[i]<<" ";
        in.close(), out.close();
    }
    return 0;
}