Cod sursa(job #1758041)

Utilizator KOzarmOvidiu Badea KOzarm Data 16 septembrie 2016 13:06:49
Problema Cerere Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
#include <vector>
using namespace std;

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

vector <int> G[100005];

bool viz[100005];

int stramos[100004],a[100005];
int n;
int k[100005];

void dfs(int poz,int p)
{
    viz[poz]=1;
    if(stramos[poz]==0)
        k[p]=0;
    else
        k[p]=k[p-stramos[poz]]+1;
    a[poz]=k[p];
    for(int i=0;i<G[poz].size();i++)
    if(viz[G[poz][i]]==0)
        dfs(G[poz][i],p+1);
}
int main()
{
    fin>>n;
    int i;
    for(i=1;i<=n;i++)
        fin>>stramos[i];
    for(i=1;i<n;i++)
    {
        int c,b;
        fin>>c>>b;
        G[c].push_back(b);
    }
    dfs(1,1);
    for(i=1;i<=n;i++)
        fout<<a[i]<<" ";
    return 0;
}