Cod sursa(job #2476145)

Utilizator mihai2003LLL LLL mihai2003 Data 18 octombrie 2019 11:03:35
Problema Cerere Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <deque>

const int NMAX = 100001;
int tata[NMAX];
int nr[NMAX],n;
int d[NMAX],cate[NMAX];
int stram[NMAX][30];
std::vector<int>v[NMAX];
std::deque<int>path;
std::ifstream in("cerere.in");
std::ofstream out("cerere.out");

void dfs(int nod){
    if(nr[nod]==0);
    else
        d[nod]=d[path[path.size()-nr[nod]]]+1;
    path.push_back(nod);
    for(int x:v[nod])
        dfs(x);
    path.pop_back();
}


int main(){
    int suma=0;
    in>>n;
    for(int i=1;i<=n;i++)
        in>>nr[i],tata[i]=i;
    for(int i=1,a,b;i<n;i++)
        in>>a>>b,v[a].push_back(b),suma+=b;
    int nr=(n+1)*n/2-suma;
    dfs(nr);
    for(int i=1;i<=n;i++)
        out<<d[i]<<" ";
    return 0;
}