Pagini recente » Cod sursa (job #1620187) | Cod sursa (job #1853255) | Cod sursa (job #1623868) | Cod sursa (job #1119255) | Cod sursa (job #874311)
Cod sursa(job #874311)
#include<fstream>
#include<vector>
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
int n,i,a,b,t,vf,v,v1,st[100009],k[100009],c[100009],nr[100009];
vector<int>l[100009];
int main()
{
f>>n;
for(i=1;i<=n;++i)
f>>k[i];
for(i=1;i<n;++i)
{
f>>a>>b;
l[a].push_back(b);
t^=b;
t^=i;
}
t^=b;
vf++;
st[vf]=t;
while(vf)
{
v=st[vf];
if(nr[v]==(int)l[v].size())
--vf;
else
{
v1=l[v][nr[v]];
++nr[v];
++vf;
st[vf]=v1;
if(k[v1]>0)
{
c[v1]=c[st[vf-k[v1]]]+1;
}
}
}
for(i=1;i<=n;++i)
g<<c[i]<<' ';
return 0;
}