Pagini recente » Cod sursa (job #2843562) | Cod sursa (job #1353650) | Cod sursa (job #443857) | Cod sursa (job #1017015) | Cod sursa (job #2046738)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("cerere.in");
ofstream out("cerere.out");
const int N=100001;
vector <int> a[N];
int n,v[N],nr,m,rez;
bool viz[N];
void citire()
{
int x,y,i;
in>>n;
for(i=1; i<=n; i++)
in>>v[i];
for(i=1; i<n; i++)
{
in>>x>>y;
a[y].push_back(x);
}
in.close();
}
void dfs(int nod)
{
int y;
viz[nod]=1;
for(size_t i=0; i<a[nod].size(); i++)
{
y=a[nod][i];
if(!viz[y])
{
nr++;
if(y==1)
{
rez++;
return;
}
if(nr%m==0)
{
rez++;
if(v[y]==0)
return;
}
dfs(y);
}
}
}
int main()
{
citire();
int i;
for(i=1; i<=n; i++)
{
nr=0;
rez=0;
if(v[i]==0)
out<<v[i]<<" ";
else
{
m=v[i];
dfs(i);
out<<rez<<" ";
}
for(int j=1; j<=n; j++)
viz[j]=0;
}
return 0;
}