Pagini recente » Cod sursa (job #523368) | Statistici petrica petrica (petrica333) | Cod sursa (job #2978505) | Cod sursa (job #2592282) | Cod sursa (job #633280)
Cod sursa(job #633280)
#include <fstream>
#include <vector>
using namespace std;
int n,k[100100],X,Y,rad,ap[100100],sol[100100];
vector<int> A[100100];
void DFs(int nod,int niv)
{
ap[niv]=nod;
if(k[nod]==0)
sol[nod]=0;
else
sol[nod] = sol[ap[niv-k[nod]]]+1;
for(vector<int>::iterator it=A[nod].begin();it!=A[nod].end();++it)
DFs(*it,niv+1);
}
int main()
{
ifstream f("cerere.in");
ofstream g("cerere.out");
f>>n;
for(int i=1;i<=n;++i)
f>>k[i];
rad=(n*(n+1))>>1;
for(int i=1;i<n;++i)
{
f>>X>>Y;
A[X].push_back(Y);
rad-=Y;
}
DFs(rad,1);
for(int i=1;i<=n;++i)
g<<sol[i]<<' ';
g.close();
return 0;
}