Cod sursa(job #2313708)

Utilizator ezioconnorVlad - Gabriel Iftimescu ezioconnor Data 7 ianuarie 2019 13:03:08
Problema Cerere Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <vector>

using namespace std;

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

int n, k[100001], nr, rez;
vector <int> Muchii[100001];

void DFS(int nod)
{
    int vecin;
    ++rez;
    for (int i = 0; i < Muchii[nod].size(); ++i)
    {
        vecin = Muchii[nod][i];
        --nr;
        if (nr == 0)
            nr = k[vecin];
        if (nr != 0 || Muchii[vecin].size() == 0)
            DFS(vecin);

    }
}

void citire()
{
    int x, y;
    in >> n;
    for (int i = 1; i <= n; ++i)
        in >> k[i];
    for (int i = 1; i <= n - 1; ++i)
    {
        in >> x >> y;
        Muchii[y].push_back(x);
    }
    for (int i = 1; i <= n; ++i)
    {
        nr = k[i];
        rez = 0;
        if (nr == 0)
            out << 0 << " ";
        else
        {
            DFS(i);
            out << rez - 1 << " ";
        }
    }
}

int main()
{
    citire();
    return 0;
}