Pagini recente » Cod sursa (job #761530) | Cod sursa (job #2512391) | Cod sursa (job #319018) | Cod sursa (job #2330214) | Cod sursa (job #811077)
Cod sursa(job #811077)
#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;
stv[poz].nrs=stv[poz-v[nd]].nrs+1;
if(v[nd]==0) stv[poz].nrs--;
r[nd]=stv[poz].nrs;
for(nod *p=x[nd];p!=NULL;p=p->adr)
{
rezolvare(p->inf,poz+1);
//poz--;
}
}
void afisare()
{
for(int i=1;i<=n;i++)
g<<r[i]<<' ';
}
int main()
{
citire();
rezolvare(x[1]->inf,1);
afisare();
return 0;
}