Pagini recente » Cod sursa (job #3125492) | Istoria paginii utilizator/7jasminec961ro2 | Borderou de evaluare (job #2891043) | Cod sursa (job #593945) | Cod sursa (job #2838373)
#include <cstdio>
#include <vector>
#define DIM 100001
using namespace std;
int k[DIM];
int t[DIM];
int n,i,r,x,y;
int s[DIM];
int sol[DIM];
vector<int> L[DIM];
void dfs(int nod, int niv){
s[niv]=nod;
if (k[nod]==0) {
sol[nod]=0;
} else {
sol[nod]=sol[s[niv-k[nod]]]+1;
}
for (int i=0;i<L[nod].size();i++) {
dfs(L[nod][i], niv+1);
}
}
int main(){
FILE *fin = fopen("cerere.in","r");
fscanf(fin,"%d",&n);
for (i=1;i<=n;i++)
fscanf(fin,"%d",&k[i]);
for (i=1;i<n;i++){
fscanf(fin,"%d %d",&x,&y);
L[x].push_back(y);
t[y] = x;
}
for (i=1;i<=n;i++)
if (t[i]==0) {
r=i;
break;
}
dfs(r,1);
FILE *fout = fopen("cerere.out","w");
for (i=1;i<=n;i++)
fprintf(fout,"%d ",sol[i]);
return 0;
}