Pagini recente » Cod sursa (job #201717) | coci-finala-2013 | Cod sursa (job #106656) | Istoria paginii runda/baraj_lasm_cl_xi_xii/clasament | Cod sursa (job #353444)
Cod sursa(job #353444)
#include<cstdio>
#include<vector>
using namespace std;
const int N=1<<17;
int n,k,q[N],v[N],t[N];
bool tata[N];
vector<int> a[N];
void dfs(int x)
{
v[++k]=x;
if(q[x])
t[x]=t[v[k-q[x]]]+1;
else
t[x]=0;
for(int i=0;i<a[x].size();++i)
dfs(a[x][i]);
--k;
}
int rad()
{
for(int i=1 ; i<=n ; ++i)
if(!tata[i])
return i;
return 0;
}
int main()
{
int x,y,i;
freopen("cerere.in","r",stdin);
freopen("cerere.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;++i)
scanf("%d",&q[i]);
for(i=1;i<n;++i)
{
scanf("%d%d",&x,&y);
tata[y]=true;
a[x].push_back(y);
}
dfs(rad());
for(i=1;i<=n;i++)
printf("%d ",t[i]);
return 0;
}