Pagini recente » Cod sursa (job #1072734) | Cod sursa (job #681255) | Cod sursa (job #2790996) | Cod sursa (job #2158000) | Cod sursa (job #2136118)
#include <cstdio>
#include <vector>
#include <algorithm>
#define nmax 100005
using namespace std;
FILE *f=fopen("cerere.in","r");
FILE *g=fopen("cerere.out","w");
vector<int>Q[nmax];
int n,stramos[nmax],tata[nmax],intel[nmax];
void read()
{
fscanf(f,"%d",&n);
for (int i=1;i<=n;++i)
fscanf(f,"%d",&stramos[i]);
for (int i=1;i<n;++i)
{
int a,b;
fscanf(f,"%d %d",&a,&b);
Q[a].push_back(b);
tata[b]=a;
}
}
int parent(int nod,int ramas)
{
if (ramas==0)
return nod;
parent(tata[nod],ramas-1);
}
void solve()
{
for (int i=1;i<=n;++i)
{
if (stramos[i]==0)
intel[i]=0;
else
intel[i]=intel[parent(i,stramos[i])]+1;
}
for (int i=1;i<=n;++i)
fprintf(g,"%d ",intel[i]);
}
int main()
{
read();
solve();
return 0;
}