Pagini recente » Cod sursa (job #2341762) | Cod sursa (job #3242422) | Cod sursa (job #2547344) | Cod sursa (job #238587) | Cod sursa (job #391904)
Cod sursa(job #391904)
#include<fstream>
#include<vector>
#define dmax 100003
using namespace std;
ifstream in("cerere.in");
ofstream out("cerere.out");
int n,c[dmax],t[dmax],dm[dmax],stv[dmax];
vector<int>g[dmax];
void dfs(int k,int pas)
{ vector<int>::iterator it;
stv[pas]=k;
if(c[k]!=0)
dm[k]=1+dm[stv[pas-c[k]]];
for(it=g[k].begin();it<g[k].end();it++)
dfs(*it,pas+1);
}
int main()
{ int i,a,b,st;
in>>n;
for(i=1;i<=n;i++)
in>>c[i];
for(i=1;i<n;i++)
{ in>>a>>b;
t[b]=a;
g[a].push_back(b);
}
in.close();
for(i=1;i<=n;i++)
if(t[i]==0)st=i;
dfs(st,1);
for(i=1;i<=n;i++)
out<<dm[i]<<" ";
out.close();
return 0;
}