Cod sursa(job #1758032)

Utilizator KOzarmOvidiu Badea KOzarm Data 16 septembrie 2016 12:28:28
Problema Cerere Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>
#include <vector>
using namespace std;

ifstream fin("cerere.in");
ofstream fout("cerere.out");

vector <int> G[100005];

int stramos[100004],a[100005];
int n;


void dfs(int poz,int &total)
{
    int prz=poz;
    total++;
    for(int i=1;i<=stramos[poz];i++)
        prz=G[prz][0];
    if(stramos[prz]!=0)
        dfs(prz,total);
}


int main()
{
    fin>>n;
    int i;
    for(i=1;i<=n;i++)
        fin>>stramos[i];
    for(i=1;i<n;i++)
    {
        int c,b;
        fin>>c>>b;
        G[b].push_back(c);
    }
    for(i=1;i<=n;i++)
    {
        if(stramos[i]!=0)
            dfs(i,a[i]);
        fout<<a[i]<<" ";
    }
    return 0;
}