Cod sursa(job #1336201)

Utilizator dianaa21Diana Pislaru dianaa21 Data 6 februarie 2015 23:21:45
Problema Cerere Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#define Nmax 100002
using namespace std;
ifstream is ("cerere.in");
ofstream os ("cerere.out");

int T[Nmax], X[Nmax];
int N, cnt;

void Read();
void DFS(int nod, int nr);

int main()
{
    Read();
    for(int i = 1; i <= N; ++i)
    {
        cnt = 0;
        if(X[i])
            DFS(i, X[i]);
        os << cnt << " ";
    }

    is.close();
    os.close();
    return 0;
}
void Read()
{
    int x, y;
    is >> N;
    for(int i = 1; i <= N; ++i)
        is >> X[i];
    for(int i = 1; i < N; ++i)
    {
        is >> x >> y;
        T[y] = x;
    }
}
void DFS(int nod, int nr)
{
    if(!nr)
    {
        cnt++;
        if(!X[nod])
            return;

        nr = X[nod];
    }
    DFS(T[nod], nr-1);
}