Pagini recente » Cod sursa (job #914804) | Cod sursa (job #2555612) | Cod sursa (job #174136) | Cod sursa (job #221119) | Cod sursa (job #1076865)
#include <fstream>
#include <vector>
#define DIM 100010
using namespace std;
int n, i, a[DIM], t[DIM], x, y, b[DIM], N, m, s[DIM];
vector<int> vect[DIM];
void dfs(int m){
b[++N]=m;
if(a[m])
s[m]=s[ b[ N-a[m] ] ]+1;
for(vector<int>::iterator it=vect[m].begin(); it!=vect[m].end(); it++)
dfs(*it);
N--;
}
int main(){
ifstream f("cerere.in");
ofstream g("cerere.out");
f>>n;
for(i=1; i<=n; i++){
f>>a[i];
}
for(i=1; i<n; i++)
{
f>>x>>y;
t[y]=1;
vect[x].push_back(y);
}
for(i=1; i<=n; i++)
if(!t[i])
break;
dfs(i);
for(i=1; i<=n; i++)
g<<s[i]<<" ";
g<<"\n";
return 0;
}