Cod sursa(job #1442803)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 26 mai 2015 12:44:14
Problema Cerere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<fstream>
#include<vector>
using namespace std;
int n, i, a, b, x;
int st[100002], t[100002], k[100002], d[100002];
vector<int> v[100002];
ifstream fin("cerere.in");
ofstream fout("cerere.out");
void dfs(int x, int niv){
    st[niv] = x;
    d[x] = d[ st[ niv - k[x] ] ] + 1;
    for(int i = 0; i < v[x].size(); i++){
        dfs(v[x][i], niv + 1);
    }
}
int main(){
    fin>> n;
    for(i = 1; i <= n; i++){
        fin>> k[i];
    }
    for(i = 1; i < n; i++){
        fin>> a >> b;
        t[b] = a;
        v[a].push_back(b);
    }
    for(i = 1; i <= n; i++){
        if(t[i] == 0){
            x = i;
            break;
        }
    }
    dfs(x, 1);
    for(i = 1; i <= n; i++){
        fout<< d[i] - 1 <<" ";
    }
    return 0;
}