Pagini recente » Cod sursa (job #1375113) | Cod sursa (job #677388) | Cod sursa (job #2276167) | Cod sursa (job #1713694) | Cod sursa (job #391869)
Cod sursa(job #391869)
#include<fstream>
#define dmax 100003
#define mult 1000000000
using namespace std;
ifstream in("cerere.in");
ofstream out("cerere.out");
int n,c[dmax],t[dmax],dm[dmax];
void mergi(int i)
{ int k,j;
k=i;
for(j=1;j<=c[i];j++)
k=t[k];
if(dm[k]<mult)
dm[i]=1+dm[k];
else mergi(k);
}
int main()
{ int i,a,b;
in>>n;
for(i=1;i<=n;i++)
in>>c[i];
for(i=1;i<n;i++)
{ in>>a>>b;
t[b]=a;
}
in.close();
for(i=1;i<=n;i++)
{ if(c[i]==0)
dm[i]=0;
else dm[i]=mult;
}
for(i=1;i<=n;i++)
if(dm[i]==mult)
{ mergi(i);
}
for(i=1;i<=n;i++)
out<<dm[i]<<" ";
out.close();
return 0;
}