Cod sursa(job #1462685)

Utilizator robx12lnLinca Robert robx12ln Data 18 iulie 2015 18:13:04
Problema Cerere Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream>
#include<vector>
using namespace std;
ifstream fin("cerere.in");
ofstream fout("cerere.out");
int k[100005],t[100005],stiv[100005],str[100005],i,n,x,y,rad;
vector<int> v[100005];
void dfs(int nod,int poz){
    stiv[poz]=nod;
    str[nod]=str[  stiv[ poz - k[nod] ] ]+1;
    for(int i=0;i<v[nod].size();i++){
        dfs(v[nod][i],poz+1);
    }
    return ;
}
int main(){
    fin>>n;
    for(i=1;i<=n;i++){
        fin>>k[i];
    }
    for(i=1;i<n;i++){
        fin>>x>>y;
        t[y]=x;
        v[x].push_back(y);
    }
    for(i=1;i<=n;i++){
        if(t[i]==0){
            rad=i;
            break;
        }
    }
    dfs(rad,1);
    for(i=1;i<=n;i++){
        fout<<str[i]-1<<" ";
    }
    return 0;
}