Pagini recente » Cod sursa (job #3142112) | Cod sursa (job #2426276) | Cod sursa (job #1757088) | Cod sursa (job #244621) | Cod sursa (job #812011)
Cod sursa(job #812011)
#include<fstream>
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
#define nmax 100010
struct nod
{
int nr;
nod * adr;
} *desc[nmax];
int k[nmax],r[nmax],str[nmax],stv[nmax],n;
void cit()
{
int a,b;
f>>n;
for(int i=1;i<=n;i++)
f>>k[i];
for(int i=1;i<n;i++)
{
f>>a>>b;//b in lista lui a
nod *p=new nod;
p->nr=b;
p->adr=desc[a];
desc[a]=p;
}
}
void dfs(int nd,int niv)
{
stv[niv]=nd;
str[nd]=stv[niv-k[nd]];
for(nod *p=desc[nd];p!=NULL;p=p->adr)
{
dfs(p->nr,niv+1);
}
}
void rasp(int i)
{
if(k[i]==0)
{
r[i]=0;
}
else
{
rasp(str[i]);
r[i]=r[str[i]]+1;
}
}
int main()
{
cit();
dfs(1,1);
rasp(1);
for(int i=1;i<=n;i++)
{
g<<r[i]<<' ';
}
return 0;
}