Cod sursa(job #2544490)

Utilizator bogdan_modoleaBogdan Modolea bogdan_modolea Data 12 februarie 2020 09:50:06
Problema Cerere Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <bits/stdc++.h>
#define NMAX 100001
using namespace std;

string file="cerere";

ifstream fin(file+".in");
ofstream fout(file+".out");

int n,m;
int tata[NMAX],k[NMAX];
int cnt;

void dad(int x,int &cnt,int y)
{
   do{
        for(int i=1;i<=k[y];i++) x=tata[x];
        cnt++;
        if(k[x]==0) return ;
        else{
            y=x;
        }
   }while(k[x]);
}

int main()
{
    int i,x,y;
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>k[i];
    for(i=1;i<n;i++){
        fin>>x>>y;
        tata[y]=x;
    }
    for(i=1;i<=n;i++){
        if(!k[i]) fout<<"0 ";
        else{
            cnt=0;
            dad(i,cnt,i);
            fout<<cnt<<" ";
        }
    }
    return 0;
}