Pagini recente » Cod sursa (job #1395683) | Cod sursa (job #37891) | Cod sursa (job #3252401) | Cod sursa (job #962995) | Cod sursa (job #965763)
Cod sursa(job #965763)
#include<fstream>
using namespace std;
int v[100002], tati[100002], rez[100002], n, a, b;
int solve(int m, int c) {
int k = 0;
if (rez[m] != 0) return rez[m];
while (m != 0 && c > 0) {
c--;
m = tati[m];
if (c == 0) {
c = v[m];
k++;
if (rez[m] != 0) return k + rez[m];
}
}
return k;
}
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] = solve(i, v[i]), out<<rez[i]<<" ";
in.close(), out.close();
}
return 0;
}