Cod sursa(job #1736479)

Utilizator Emy1337Micu Emerson Emy1337 Data 1 august 2016 20:09:22
Problema Cerere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <bits/stdc++.h>

using namespace std;

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

const int MAXN = 1e5 + 5;
vector <int> graf[MAXN];
int stiva[MAXN], rez[MAXN];
int n, v[MAXN], root, dim;

void dfs(int nod)
{
    stiva[++dim] = nod;

    if( v[nod] )
        rez[nod] = rez[stiva[dim - v[nod]]] + 1;

    for(auto it: graf[nod])
        dfs(it);

    --dim;
}

int main()
{
    fin>>n;
    for(int i=1; i<=n; i++) fin>>v[i];

    root = n * (n+1) / 2;

    for(int i=1; i<n ; i++)
    {
        int x,y;
        fin>>x>>y;
        graf[x].push_back(y);
        root -= y;
    }

    dfs(root);

    for(int i=1; i<=n; i++) fout<<rez[i]<<" ";










}