Pagini recente » Cod sursa (job #372308) | Cod sursa (job #2331614) | Cod sursa (job #2961750) | Autentificare | Cod sursa (job #1003353)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
vector<int>v[100005];
int s[100005],d,i,x,nrm[100005],value[100005],n,sum,y;
void dfs(int x)
{
d++;
s[d]=x;
if(value[x]==0)
nrm[x]=0;
else{
nrm[x]=nrm[s[d-value[x]]]+1;
}
for(i=0;i<v[x].size();i++)
{
dfs(v[x][i]);
}
d--;
}
int main()
{
f>>n;
for(i=1;i<=n;i++)
{ sum+=i;
f>>value[i];
}
for(i=1;i<n;i++)
{
f>>x>>y;
v[x].push_back(y);
sum-=y;
}
dfs(sum);
for(i=1;i<=n;i++){
g<<nrm[i]<<" ";
}
return 0;
}