Cod sursa(job #3219230)

Utilizator Sasha_12454Sasha Costea Sasha_12454 Data 30 martie 2024 15:38:36
Problema Cerere Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in ("cerere.in");
ofstream out ("cerere.out");
const int NMAX=100005;
int n;
int k[NMAX];
int x,y;
vector <int> v[NMAX];
bitset <NMAX> fr;
int stramos[NMAX];
int fin[NMAX];
void dfs(int nod, int pas)
{
    stramos[pas]=nod;
    if(k[nod])
    {
        fin[nod]=1+fin[stramos[pas-k[nod]]];
    }
             for(int i=0; i<v[nod].size(); i++)
    {
        dfs(v[nod][i],pas+1);
    }
}
int main()
{
    in>>n;
    for(int i=1; i<=n; i++)
    {
        in>>k[i];
    }
    for(int i=1; i<n; i++)
    {
        in>>x>>y;
        fr[y]=true;
        v[x].push_back(y);
    }
    for(int i=1; i<=n; i++)
    {
        if(!fr[i])
        {
            dfs(i,1);
            break;
        }
    }
    for(int i=1;i<=n;i++)
    {
        out<<fin[i]<<" ";
    }
    return 0;
}