Cod sursa(job #477455)

Utilizator dacyanMujdar Dacian dacyan Data 14 august 2010 18:40:05
Problema Cerere Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <vector>
using namespace std;

ifstream fin("cerere.in");
ofstream fout("cerere.out");

vector<long> a, t;
long n, k, i, j, x, y;
long Rez(long i, long j);

int main()
{
    fin >> n;
    a.resize(n+1); t.resize(n+1);
    for (i = 1; i <= n; ++i)
        fin >> a[i];
    for (i = 1; i <= n; i++)
    {
        fin >> x >> y;
        t[y] = x;
    }
    fin.close();
    for ( i = 1; i <= n; ++i)
        if (a[i] == 0) fout << '0' << ' ';
        else fout << Rez(i, a[i]) << ' ';
    fout.close();
    return 0;
}

long Rez(long i, long j)
{
    if (!a[i]) return 0;
    long k = j, ii = i;
    while (t[ii] && k)
    {
        ii = t[ii];
        k--;
    }
    
    return Rez(ii, j) + 1;    
        
}