Pagini recente » Cod sursa (job #1727615) | Cod sursa (job #1964010) | Cod sursa (job #3255156) | Cod sursa (job #235690) | Cod sursa (job #1268654)
#include <fstream>
#include <vector>
using namespace std;
ifstream is("cerere.in");
ofstream os("cerere.out");
int n, cnt;
vector<int> k, t;
void READ();
void FIND(int nod, int w);
int main()
{
READ();
for ( int i = 1; i <= n; ++i )
{
cnt = 0;
if ( k[i] )
{
FIND(t[i], k[i] - 1);
}
os << cnt << " ";
}
is.close();
os.close();
return 0;
}
void FIND(int nod, int w)
{
if ( !w )
{
++cnt;
if ( k[nod] )
FIND(t[nod], k[nod - 1]);
return;
}
if ( !t[nod] )
{
++cnt;
return;
}
FIND(t[nod], w - 1);
}
void READ()
{
int a, b;
is >> n;
k.resize(n + 1);
t.resize(n + 1);
for ( int i = 1; i <= n; ++i )
is >> k[i];
for ( int i = 1; i < n; ++i )
{
is >> a >> b;
t[b] = a;
}
}