Pagini recente » Cod sursa (job #2277157) | Cod sursa (job #1745673) | Cod sursa (job #1864745) | Cod sursa (job #585887) | Cod sursa (job #2836432)
#include <bits/stdc++.h>
#define MAX 100002
using namespace std;
ifstream fin("cerere.in");
ofstream fout("cerere.out");
vector<int>Graf[MAX];
int viz[MAX], dp[MAX], ans[MAX], k[MAX], rootv[MAX];
void dfs(int node, int niv)
{
viz[node]=1;
dp[niv]=node;
ans[node]=1+ans[dp[niv-k[node]]];
for(auto i : Graf[node])
{
if(!viz[i])
dfs(i, niv+1);
}
}
int main()
{
int n, root;
fin>>n;
for(int i=1; i<=n;i++)
fin>>k[i];
for(int i=2; i<=n;i++)
{
int x,y;
fin>>x>>y;
Graf[x].push_back(y);
rootv[y]=1;
}
for(int i=1; i<=n; i++)
{
if(rootv[i]==0)
{
root=i;
break;
}
}
dfs(root, 1);
for(int i=1; i<=n;i++)
fout<<ans[i];
return 0;
}