Cod sursa(job #2296211)

Utilizator vladstanciuVlad Stanciu vladstanciu Data 4 decembrie 2018 16:09:33
Problema Cerere Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int N=100001;
int n;
int v[N],d[N],cost[N];
bool a[1000][1000],viz[N];

void dfs(int x , int niv)
{
    d[niv]=x;
    viz[x]=true;
    cost[x]=1+cost[d[niv-v[x]]];
    for(int i=1 ; i<=n ; i++)
    {
        if(!viz[i] && a[i][x])
        {
            dfs(i,niv+1);
        }
    }
}

int main()
{
    int i,x,y;
    in>>n;
    for(i=1 ; i<=n ; i++)
    {
        in>>v[i];
    }
    for(i=1 ; i<n ; i++)
    {
        in>>x>>y;
        a[x][y]=a[y][x]=true;
    }
    dfs(1,0);
    for(i=1 ; i<=n ; i++)
    {
        out<<cost[i]-1<<" ";
    }
    return 0;
}