Cod sursa(job #2456019)

Utilizator Anakin1001George Giorgiu Gica Anakin1001 Data 13 septembrie 2019 12:57:55
Problema Cerere Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
vector <int> graph[100001];
int st[100001], v[100001], i, n, a, b, d[100001];
bool viz[100001];
void dfs(int node, int level){
    st[level] = node;
    d[node] = d[st[level - v[node]]] + 1;
    for(int i = 0; i < graph[node].size(); i++)
        dfs(graph[node][i], level + 1);
}
int main()
{   f >> n;
    for(i = 1; i <= n; i++)
        f >> v[i];
    for(i = 1; i <= n - 1; i++){
        f >> a >> b;
        graph[a].push_back(b);
        viz[b] = 1;
    }
    i = 1;
    while(viz[i] != 0)
        i++;
    dfs(i, 1);
    for(i = 1; i <= n; i++)
        g << d[i] - 1 << ' ';
    return 0;
}