Cod sursa(job #2626640)

Utilizator darkeagleDaniel Popescu darkeagle Data 7 iunie 2020 12:33:45
Problema Cerere Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>

using namespace std;


int n;
int v[100001], g[100001],viz[10001];
void citire() {

    freopen("cerere.in", "r", stdin);
    freopen("cerere.out", "w", stdout);

    scanf("%d",&n);

    int i, j;

    for(i = 1; i <= n ;i++) {
        scanf("%d",&v[i]);
    }

    int x;
    int y;
    for(i=1;i<=n-1;i++) {

        scanf("%d %d",&x,&y);
        g[y] = x;
    }

}
int str(int t1) {

if(v[t1] == 0)
    return 0;


int r, nr1;

int h;
int nr2 = 0;

h = t1;
do{

   nr1 = 0;


while(nr1 < v[t1])
{

    r = g[h];
    h = r;
    nr1++;
}
nr2++;


} while(v[h] != 0);

return nr2;
}

/*void DFS(int x) {

int i;

viz[x] = 1;
for(i=1;i<=n;i++) {


    if(a[x][i] == 1 && viz[i] == 0)
        DFS(i);
}


}
*/
int main()
{

    citire();

        int i, j;


for(i=1;i<=n;i++)
            printf("%d ",str(i));





    return 0;
}