Cod sursa(job #3004462)

Utilizator Luca529Taschina Luca Luca529 Data 16 martie 2023 12:38:54
Problema Cerere Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;
ifstream fin("cerere.in");
ofstream fout("cerere.out");
vector<int> x[100001], y[100001];
int z[100001], v[100001], p[100001], r;

int F(int nod)
{vector<int>:: iterator I;
 for(I=y[nod].begin();I<y[nod].end();I++)
 return F(*I);

 return nod;
}

void Fill(int nod, int niv)
{p[niv]=nod;
 if(z[nod]==0)v[nod]=0;
 else v[nod]=1+v[p[niv-z[nod]]];

 vector<int>:: iterator I;
 for(I=x[nod].begin();I<x[nod].end();I++)
 Fill(*I, niv+1);
}

int main()
{   int n, a, b;
    fin>>n;
    for(int i=1;i<=n;i++)
    fin>>z[i];

    for(int i=1;i<n;i++)
    {fin>>a>>b;
     x[a].push_back(b);
     y[b].push_back(a);
    }
    r=F(1);

    Fill(r, 1);

    for(int i=1;i<=n;i++)
    fout<<v[i]<<" ";
    return 0;
}