Pagini recente » Cod sursa (job #1497048) | Cod sursa (job #430040) | Cod sursa (job #2970702) | Cod sursa (job #445838) | Cod sursa (job #3306965)
#include <bits/stdc++.h>
using namespace std;
ifstream in("cerere.in");
ofstream out("cerere.out");
int v[100005],detcor[100005],tat;
vector<int> parinti;
bool viz[100005];
vector<vector<int>> vec(100005);
void rez(int nod, int dif)
{
//cout<<nod<<" ";
viz[nod]=true;
parinti.push_back(nod);
detcor[nod]=detcor[parinti[dif-v[nod]]]+1;
for(auto it:vec[nod])
{
if(!viz[it])
rez(it,dif+1);
}
parinti.pop_back();
}
int main()
{
int n,a,b;
in>>n;
tat=n*(n+1)/2;
for(int i=1;i<=n;i++)
in>>v[i];
for(int i=1;i<n;i++)
{
in>>a>>b;
tat-=b;
vec[a].push_back(b);
}
rez(tat,0);
for(int i=1;i<=n;i++)
out<<detcor[i]-1<<" ";
return 0;
}