Cod sursa(job #3270884)

Utilizator McMeatGhenea Radu Stefan McMeat Data 24 ianuarie 2025 19:33:47
Problema Cerere Scor 65
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>
#include <cmath>
#include <queue>

using namespace std;

ifstream f("cerere.in");
ofstream g("cerere.out");
#define pii pair<int,int>
#define cin f
//#define cout g
#define NMAX 100100
int n, m, x, y, v[NMAX], a[NMAX], k[NMAX];
vector<int> l[NMAX], st;

void dfs(int nod)
{
    v[nod]=1;
    st.push_back(nod);
    a[nod]=1+a[st[st.size()-k[nod]-1]];
    for(int i=0;i<l[nod].size();i++)
    {
        int vc=l[nod][i];
        if(v[vc]==0)
        {
            dfs(vc);
            st.pop_back();
        }
    }
}

int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>k[i];
        if(k[i]==0)
        {
            m=i;
            a[i]=-1;
        }
    }
    while(f>>x>>y)
    {
        l[x].push_back(y);
        l[y].push_back(x);
    }
    dfs(m);
    for(int i=1;i<=n;i++)
    {
        g<<a[i]<<" ";
    }
    return 0;
}
//91 92 353 2683 2684 1340 2632