Cod sursa(job #1895449)

Utilizator LizaSzabo Liza Liza Data 27 februarie 2017 23:04:33
Problema Cerere Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cerere.in");
ofstream fout("cerere.out");
const int NMax=100005;
int N,A[NMax],F[NMax],Sol[NMax];

void Read()
{
    fin>>N;
    for (int i=1;i<=N;++i)
    {
        fin>>A[i];
    }
    for (int i=1;i<N;++i)
    {
        int A,B;
        fin>>A>>B;
        F[B]=A;
    }
}
void stramos(int x)
{

    int y;
     y=F[x];
    for(int i=1;i<A[x];++i)
    {
        y=F[y];
    }
    if(A[y]!=0)
    {
    stramos(A[y]);

    }
    Sol[x]=Sol[A[y]]+1;
    A[y]=0;
}




void Solve()
{
    for(int i=2;i<=N;++i)
    {
        if(A[i]==0)
        {
            Sol[i]=0;
        }
        else
        {
            stramos(i);
        }

    }
    Sol[1]=0;
    for(int i=1;i<=N;++i)
    {
        fout<<Sol[i]<<" ";
    }
    fout<<"\n";
}

int main()
{
    Read();

    Solve();
    return 0;
}