Cod sursa(job #2296298)

Utilizator ilie0712Botosan Ilie ilie0712 Data 4 decembrie 2018 16:45:51
Problema Cerere Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <fstream>
#include <iostream>
#include <algorithm>
#include <vector>


using namespace std;


ifstream in("cerere.in");
ofstream out("cerere.out");

const int N=100003;

vector <int> a[N];

int n,v[N],cost[N],d[N],tata[N];


void dfs(int x, int niv)
{
    d[niv]=x;
    cost[x]=1+cost[d[niv-v[x]]];
    for(auto y:a[x])
        dfs(y,niv+1);
}

int main()
{
    in>>n;
    for(int i=1; i<=n; ++i) in>>v[i];
    int x,y;
    while(in>>x>>y)
    {
        a[x].push_back(y);
        tata[y]=x;
    }
    int vf=1;
    for(int i=1; i<=n; ++i) if(tata[i]==0) vf=i;
    dfs(vf,1);
    for(int i=1; i<=n; ++i) out<<cost[i]-1<<" ";
    return 0;
}