Cod sursa(job #2792501)

Utilizator mihneadv@yahoo.comDavid Mihnea Stefan [email protected] Data 1 noiembrie 2021 19:47:50
Problema Cerere Scor 75
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<fstream>
#include<vector>

using namespace std;

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

int X;
vector<vector<int>>v;
vector<int>dist;
vector<int>sol;
int Q[100000];

void DFS(int nod, int ind)
{
    Q[ind] = nod;
    sol[nod] = sol[Q[ind - dist[nod]]] + 1;
    for(int i = 0; i < v[nod].size(); i++)
    {
        DFS(v[nod][i],ind + 1);
    }
}

int main()
{
    cin >> X;
    dist.resize(X);
    v.resize(X);
    sol.resize(X);
    int ind = false;
    for(int i = 0; i < X; i++)
    {
        cin >> dist[i];
        ind = (ind ^ i);
    }
    for(int i = 0; i < X - 1; i++)
    {
        int V1, V2;
        cin >> V1 >> V2;
        V1--, V2--;
        v[V1].push_back(V2);
        ind = ind ^ V2;
    }
    DFS(ind, false);
    for(int i = 0; i < X; i++)
    {
        cout << sol[i] - 1 << ' ';
    }
    return false;
}