Cod sursa(job #2231300)

Utilizator AvramDanielAvram Daniel AvramDaniel Data 13 august 2018 18:55:54
Problema Cerere Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <bits/stdc++.h>
using namespace std;

int n,p[100010],pred[100010],ans,j,use,a,b,dist[100010];

int main()
{
    ifstream cin("cerere.in");
    ofstream cout("cerere.out");
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>pred[i];
    for(int i=1;i<n;i++)
    {
        cin>>a>>b;
        p[b]=a;
    }
    for(int i=1;i<=n;i++)
    {
        if(pred[i]) dist[i]=dist[p[i]]+1;
        ans=0;
        j=i;
        bool u=1;
        while(pred[j] && u)
            {
                if(dist[j]==pred[j]) ans++, u=0;
                else
                {
                     use=pred[j];
                    while(use--)
                    {
                        j=p[j];
                    }
                    ans++;
                }

            }
        cout<<ans<<' ';
    }


    return 0;
}