Cod sursa(job #2136118)

Utilizator NannyiMaslinca Alecsandru Mihai Nannyi Data 19 februarie 2018 17:43:16
Problema Cerere Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <cstdio>
#include <vector>
#include <algorithm>
#define nmax 100005
using namespace std;

FILE *f=fopen("cerere.in","r");
FILE *g=fopen("cerere.out","w");

vector<int>Q[nmax];

int n,stramos[nmax],tata[nmax],intel[nmax];

void read()
{
    fscanf(f,"%d",&n);
    for (int i=1;i<=n;++i)
        fscanf(f,"%d",&stramos[i]);
    for (int i=1;i<n;++i)
    {
        int a,b;
        fscanf(f,"%d %d",&a,&b);
        Q[a].push_back(b);
        tata[b]=a;
    }
}

int parent(int nod,int ramas)
{
    if (ramas==0)
        return nod;
    parent(tata[nod],ramas-1);
}

void solve()
{
    for (int i=1;i<=n;++i)
        {
            if (stramos[i]==0)
                intel[i]=0;
            else
                intel[i]=intel[parent(i,stramos[i])]+1;
        }
    for (int i=1;i<=n;++i)
        fprintf(g,"%d ",intel[i]);
}

int main()
{
    read();
    solve();
    return 0;
}