Pagini recente » Cod sursa (job #1213409) | Cod sursa (job #2417893) | Cod sursa (job #1532249) | Cod sursa (job #1559877) | Cod sursa (job #993585)
Cod sursa(job #993585)
#include<fstream>
#include<vector>
using namespace std;
ifstream f("cerere.in"); ofstream g("cerere.out");
const int N=100002;
int n,vf,sol[N],s[N],T[N],k[N];
vector <int> v[N];
void dfs(int x)
{ s[++vf]=x;
if(k[x]) sol[x]=sol[s[vf-k[x]]]+1;
vector <int> :: iterator it=v[x].begin(), sf=v[x].end();
for(;it!=sf;++it) dfs(*it);
--vf;
}
int main ()
{ f>>n;
int i,A,B;
for(i=1;i<=n;++i) f>>k[i];
for(i=1;i<n;++i)
{ f>>A>>B;
v[A].push_back(B);
T[B]=1;
}
for(i=1;i<=n;++i)
if(!T[i]) dfs(i), i=n;
for(i=1;i<=n;++i) g<<sol[i]<<" ";
g.close(); return 0;
}