Pagini recente » Cod sursa (job #266713) | Cod sursa (job #2587951) | Cod sursa (job #2269147) | Cod sursa (job #2104082) | Cod sursa (job #965594)
Cod sursa(job #965594)
#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;
}