Cod sursa(job #1108008)

Utilizator 96andreiFMI Andrei Barbu 96andrei Data 15 februarie 2014 12:33:01
Problema Cerere Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;

int const N=100005;

//vector<int> graph[N];
//bool use[N];
int k[N],t[N];
int n;

/*
void dfs(int x)
{
    use[x]=true;
    vector<int>::iterator it;

    for(it=graph[x].begin(); it!=graph[x].end(); it++)
    {
        if(!use[*it])
            dfs(*it);
    }
}
*/

int main()
{
    ifstream fin("cerere.in");
    ofstream fout("cerere.out");
    fin>>n;
    for(int i=1; i<=n; i++)
        fin>>k[i];
    for(int i=1; i<n; i++)
    {
        int x,y;
        fin>>x>>y;
        //graph[x].push_back(y);
        t[y]=x;
    }
/*
    for(int i=1; i<=n; i++)
        if(!use[i])
            dfs(i);*/
    for(int i=1; i<=n; i++)
    {
        int pas=0;
        int T=i;
        while(k[T])
        {
            pas++;
            for(int p=1; p<=k[i]; p++)
                T=t[T];
        }
        fout<<pas<<" ";
    }
    return 0;
}