Cod sursa(job #1216798)

Utilizator TibixbAndrei Tiberiu Tibixb Data 5 august 2014 19:59:28
Problema Cerere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream>
#include<vector>
using namespace std;
int v[100007], N[100007], D[100007], x, y, i, n, rad, sum, s, p[100007];
vector <int> L[100007];
void dfs(int nod, int niv){
    v[nod]=1;
    N[niv]=nod;
    if(p[nod]==0)
        D[nod]=0;
    else
        D[nod]=1+D[N[niv-p[nod]]];
    for(int i=0; i<L[nod].size(); i++){
        int fiu=L[nod][i];
        if(v[fiu]==0)
            dfs(fiu, niv+1);
    }
}
ifstream in("cerere.in");
ofstream out("cerere.out");
int main(){
    in>>n;
    for(i=1; i<=n; i++)
        in>>p[i];
    for(i=1; i<n; i++){
        in>>x>>y;
        L[x].push_back(y);
        s+=y;
    }
    sum=n*(n+1)/2;
    rad=sum-s;
    dfs(rad, 1);
    for(i=1; i<=n; i++)
        out<<D[i]<<" ";
return 0;
}