Pagini recente » Cod sursa (job #1799551) | Cod sursa (job #1799843) | Cod sursa (job #251379) | Cod sursa (job #495006) | Cod sursa (job #1278098)
#include <fstream>
#define dim 100001
#include <list>
#include <cstring>
using namespace std;
int s[dim], v[dim], d[dim], p, c, ind, n;
list <int> nod[dim];
void dfs(int vf)
{
for( list<int>::iterator j=nod[vf].begin(); j!=nod[vf].end(); ++j)
{
v[++ind]=*j;
if(s[*j]!=0)
d[*j]=d[v[ind-s[*j]]]+1;
dfs(*j);
}
ind--;
}
int main()
{
ifstream in("cerere.in");
ofstream out("cerere.out");
in>>n;
for(int i=1; i<=n; ++i)
in>>s[i];
for(int i=1; i<n; ++i)
{
in>>p>>c;
nod[p].push_back(c);
d[c]++;
}
for(int i=1; i<=n; ++i)
{
if(d[i]==0)
{
memset(d, 0, sizeof(d));
dfs(i);
ind=0;
v[++ind]=0;
break;
}
}
for(int i=1; i<=n; ++i)
out<<d[i]<<" ";
out<<"\n";
in.close();
out.close();
return 0;
}