Cod sursa(job #812071)

Utilizator TodeaDariustodea darius TodeaDarius Data 13 noiembrie 2012 12:56:40
Problema Cerere Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<fstream>
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
int n,v[100005],r[100005];
struct nod
{
    int inf;
    nod *adr;
} *x[100005];
struct stiva
{
    int m;
    int nrs;
} stv[100005];
void citire()
{
    int a,b;
    f>>n;
    for(int i=1;i<=n;i++)
        f>>v[i];
    for(int i=1;i<n;i++)
    {
        f>>a>>b;
        nod *p=new nod;
        p->inf=b;
        p->adr=x[a];
        x[a]=p;
    }
}
void rezolvare(int nd,int poz)
{
        stv[poz].m=nd;
        if(v[nd]==0) 
			stv[poz].nrs=0;
		else
			stv[poz].nrs=stv[poz-v[nd]].nrs+1;
        r[nd]=stv[poz].nrs;
    for(nod *p=x[nd];p!=NULL;p=p->adr)
    {
        rezolvare(p->inf,poz+1);
    }
}
void afisare()
{
   for(int i=1;i<=n;i++)
      g<<r[i]<<' ';

}
int main()
{
    citire();
    rezolvare(1,1);
    afisare();
    return 0;
}