Cod sursa(job #1409882)

Utilizator sddddgjdZloteanu Anastasia sddddgjd Data 30 martie 2015 19:17:38
Problema Cerere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<stdio.h>
#include<vector>
#define N 100099
std::vector<int> v[N];
int val[N],st[N],ans[N];
void back(int pos,int nr){
    int i;
    st[pos]=nr;
    for(i=0;i<v[nr].size();i++){
        if(val[v[nr][i]]<=0)
            ans[v[nr][i]]=0;
        else
            ans[v[nr][i]]=ans[st[pos-val[v[nr][i]]+1]]+1;
        back(pos+1,v[nr][i]);
    }
}
int main(){
    FILE *fin,*fout;
    fin=fopen("cerere.in","r");
    fout=fopen("cerere.out","w");
    int n;
    fscanf(fin,"%d",&n);
    int i;
    for(i=0;i<n;i++)
        fscanf(fin,"%d",&val[i+1]);
    int rad=n*(n+1)/2;
    for(i=0;i<n-1;i++){
        int a,b;
        fscanf(fin,"%d%d",&a,&b);
        rad-=b;
        v[a].push_back(b);
    }
    back(1,rad);
    for(i=0;i<n;i++)
        fprintf(fout,"%d ",ans[i+1]);
    return 0;
}