Cod sursa(job #734887)

Utilizator robertpoeRobert Poenaru robertpoe Data 15 aprilie 2012 09:35:49
Problema Cerere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
#include <vector>
#define pb push_back
#define dim 100001
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
int n,i,rez,a,b;
int ara[dim],arb[dim],arc[dim];
vector<int> A[dim];
void dfs(int nod,int lvl) 
{
    vector<int>::iterator i;
    ara[lvl]=nod;
    arb[nod]=1+arb[ara[lvl-arc[nod]]];
    if (!arc[nod]) 
		--arb[nod];
    for(i=A[nod].begin();i!=A[nod].end();i++)
		dfs(*i,lvl+1);
}
int main() 
{
    f>>n;
    for (i=1;i<=n;i++)
        f>>arc[i];
    rez=(n*n+n)/2;
    for (i=1;i<n;i++) 
	{
        f>>a>>b;
        A[a].pb(b);
        rez-=b;
    }
    dfs(rez,1);
    for (i=1;i<=n;i++)
		g<<arb[i]<<' ';
    return 0;
}