Pagini recente » Cod sursa (job #3307097) | Cod sursa (job #2592769) | Cod sursa (job #449500) | Cod sursa (job #451150) | Cod sursa (job #3306967)
#include <bits/stdc++.h>
#define int long long
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();
}
signed 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;
}