Pagini recente » Cod sursa (job #16254) | Cod sursa (job #1578681) | Cod sursa (job #566413) | Cod sursa (job #1648723) | Cod sursa (job #643106)
Cod sursa(job #643106)
#include<fstream>
#include<vector>
#define NMAX 100100
using namespace std;
vector <int> A[NMAX];
int n,radacina,v[NMAX],sol[NMAX],drum[NMAX];
void afis() {
int i;
ofstream out("cerere.out");
for(i=1;i<=n;i++)
out<<sol[i]<<' ';
out<<'\n';
out.close();
}
void dfs(int nod,int nivel) {
unsigned int i,j;
drum[nivel]=nod;
if(v[nod]==0)
sol[nod]=0;
else
sol[nod]=sol[drum[nivel-v[nod]]]+1;
for(i=0;i<A[nod].size();i++) {
j=A[nod][i];
dfs(j,nivel+1);
}
}
void citire() {
int i,x,y;
ifstream in("cerere.in");
in>>n;
for(i=1;i<=n;i++)
in>>v[i];
radacina=n*(n+1)>>1;
for(i=1;i<n;i++) {
in>>x>>y;
A[x].push_back(y);
radacina-=y;
}
in.close();
}
int main() {
citire();
dfs(radacina,1);
afis();
return 0;
}