Cod sursa(job #2011480)

Utilizator GeoeyMexicanuBadita George GeoeyMexicanu Data 16 august 2017 13:41:15
Problema Cerere Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 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 arb[N],v[N],i,j,n,m,k,sol[N],t;
void dfs(int x,int in,int nr,int prec)
{
    if(nr==v[prec])
    {
        nr=0;
        sol[in]++;
        prec=x;
    }
    for(int ind=0;ind<vec[x].size();ind++)
        dfs(vec[x][ind],in,nr+1,prec);
}
int main()
{
    f>>n;
    for(i=1;i<=n;i++)
        f>>v[i];
    for(i=1;i<n;i++)
    {
        f>>m>>k;
        vec[k].push_back(m);
        arb[k]=1;
    }
    for(i=1;i<=n;i++)
    {
        if(v[i]!=0)
            dfs(i,i,0,i);
    }
    for(i=1;i<=n;i++)
        g<<sol[i]<<' ';
}