Pagini recente » Cod sursa (job #1310547) | Cod sursa (job #2676431) | Cod sursa (job #2758211) | Cod sursa (job #2297930) | Cod sursa (job #1087293)
#include <stdio.h>
#define NMAX 100005
using namespace std;
int T[NMAX],K[NMAX],NR,N;
void read()
{
int i,a,b;
scanf("%d\n",&N);
for (i=1;i<=N;i++) scanf("%d ",&K[i]);
for (i=1;i<N;i++)
{
scanf("%d %d\n",&a,&b);
T[b]=a;
}
}
void dfs(int p,int k,int kmax)
{
if (k==kmax && K[p] && T[p])
NR++,dfs(T[p],1,K[p]);
if (k<kmax && T[p])
dfs(T[p],k+1,kmax);
}
void solve()
{
int i;
for (i=1;i<=N;i++)
{
NR=0;
if (K[i])
{
dfs(i,0,0);
printf("%d\n",NR);
}
else printf("0\n");
}
}
int main()
{
freopen ("cerere.in","r",stdin);
freopen ("cerere.out","w",stdout);
read();
solve();
fclose(stdin);
fclose(stdout);
return 0;
}