Cod sursa(job #2287259)

Utilizator ilie0712Botosan Ilie ilie0712 Data 21 noiembrie 2018 18:21:08
Problema Cerere Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <fstream>
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

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

const int N=100003;

vector <int> a[N];

int n,contor,v[N],frecv[N],tata[N];
bool viz[N];

void citire()
{
    int x,y;
    in>>n;
    for(int i=1; i<=n; ++i) in>>v[i];
    for(int i=1; i<n; ++i)
    {
        in>>x>>y;
        a[x].push_back(y);
        a[y].push_back(x);
        tata[y]=x;
    }
    in.close();
}

int main()
{
    citire();
    for(int i=1; i<=n; ++i)
    {
        if(v[i]>0)
        {
            contor=0;
            int aux=i;
            int aux2=i;
            while(v[aux]>0)
            {
                int ok=0;
                aux2=tata[aux2];
                ++contor;
                if(contor==v[aux])
                {
                    ++frecv[i];
                    contor=0;
                    ok=1;
                }
                if(ok==1)
                    aux=aux2;
            }
        }

    }
    for(int i=1; i<=n; ++i) out<<frecv[i]<<" ";
    return 0;
}