Cod sursa(job #895634)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 27 februarie 2013 12:02:35
Problema Cerere Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<fstream>
#include<vector>
#define dim 100007
using namespace std;

ifstream f("cerere.in");
ofstream g("cerere.out");
vector<int>G[dim];
int niv[dim],K[dim],x,y,i,n,sol[dim];

void dfs(int nod ,int nivel){
    niv[nivel]=nod;

    if(K[nod])
        sol[nod]=sol[niv[nivel-K[nod]]]+1;
    for(int i=0;i<G[nod].size();++i) {
        dfs(G[nod][i],nivel+1);
    }

}
int main() {
    f>>n;

    for(i=1;i<=n;++i){
        f>>x;
        K[i]=x;
    }
    for(i=1;i<n;++i){
        f>>x>>y;
        G[x].push_back(y);
    }
    dfs(1,0);
    for(i=1;i<=n;++i){
        g<<sol[i]<<" ";
    }
    return 0;
}