Cod sursa(job #3196730)

Utilizator stefanrotaruRotaru Stefan-Florin stefanrotaru Data 24 ianuarie 2024 17:57:44
Problema Cerere Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <vector>

using namespace std;

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

vector <int> a[1 << 17];

int n, b[1 << 17], T[1 << 17], sol[1 << 17], s[1 << 17], t;

void dfs(int x)
{
    s[++t] = x;

    if (b[x]) {
        sol[x] = sol[s[t - b[x]]] + 1;
    }

    for (int i = 0; i < (int) a[x].size(); ++i) {
        dfs(a[x][i]);
    }

    t--;
}

int main()
{
    f >> n;

    for (int i = 1; i <= n; ++i) {
        f >> b[i];
    }

    for (int i = 1; i < n; ++i) {
        int x, y;
        f >> x >> y;
        a[x].push_back(y);
        T[y] = 1;
    }

    int i;

    for (i = 1; T[i]; ++i) {

    }

    dfs(i);

    for (i = 1; i <= n; ++i) {
        g << sol[i] << ' ';
    }

    return 0;
}