Cod sursa(job #2011494)

Utilizator GeoeyMexicanuBadita George GeoeyMexicanu Data 16 august 2017 14:22:28
Problema Cerere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <iostream>
#include <fstream>
#include <vector>
#define N 100010

using namespace std;

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

vector<int> vec[N];
int v[N],st[N],sol[N],arb[N],i,t,j,n,k,m;
void dfs(int x)
{
    st[++t]=x;
    if(v[x])
        sol[x]=sol[st[t-v[x]]]+1;
    for(int ind=0;ind<vec[x].size();ind++)
        dfs(vec[x][ind]);
    --t;
}
int main()
{
    f>>n;
    for(i=1;i<=n;i++)
        f>>v[i];
    for(i=1;i<n;i++)
    {
        f>>m>>k;
        vec[m].push_back(k);
        arb[k]=1;
    }
    for(i=1;arb[i];i++);
    dfs(i);
    for(i=1;i<=n;i++)
        g<<sol[i]<<' ';
}