Pagini recente » Cod sursa (job #1083917) | Cod sursa (job #2889280) | Cod sursa (job #2521170) | Cod sursa (job #2180612) | Cod sursa (job #959871)
Cod sursa(job #959871)
#include<fstream>
#include<vector>
#define DIM 100010
using namespace std;
ifstream fin("cerere.in");
ofstream fout("cerere.out");
vector<int>L[DIM];
int d[DIM];//d[i]=rezultatul cerut pt nodul i
int v[DIM],p[DIM],viz[DIM],x,y,i,r[DIM],n;
void dfs(int x,int niv)
{
p[niv]=x;
viz[x]=1;
if(v[x]==0)
d[x]=0;
else
d[x]=1+d[p[niv-v[x]]];
for(int i=0;i<L[x].size();i++)
{
if(viz[L[x][i]]==0)
dfs(L[x][i],niv+1);
}
}
int main()
{
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i];
for(i=1;i<n;i++)
{
fin>>x>>y;
L[x].push_back(y);
r[y]=1;
}
for(i=1;i<=n;i++)
if(r[i]==0){
dfs(i,1);
break;
}
for(i=1;i<=n;i++)
fout<<d[i]<<" ";
return 0;
}