Pagini recente » Cod sursa (job #403527) | Cod sursa (job #462663) | Cod sursa (job #2479762) | Cod sursa (job #2859254) | Cod sursa (job #953586)
Cod sursa(job #953586)
#include <fstream>
#include <vector>
#define DIM 100010
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
int n, i, a[DIM], t[DIM], x, y, b[DIM], N, m, s[DIM];
vector<int> l[DIM];
void dfs(int m){
b[++N]=m;
if(a[m])
s[m]=s[ b[ N-a[m] ] ]+1;
for(vector<int>::iterator it=l[m].begin(); it!=l[m].end(); it++)
dfs(*it);
N--;
}
int main(){
f>>n;
for(i=1; i<=n; i++)
f>>a[i];
for(i=1; i<n; i++)
{
f>>x>>y;
t[y]=1;
l[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;
}