def tree_walk(node):
yield from tree_walk(node.left)
yield node.value
yield from tree_walk(node.right)
int b [51];
...
b[0] = a[0];
for (i = 1; i < n; i++)
b[i] = b[i-1] + a[i];
DP(0,0,0,0) = 1,
DP(0,*,*,*) = 0
if (k == -1) { // у вас индексация с 0, у меня в формулах с 1.
return (t==0 && j==0 && i == 0) ? 1 : 0;
}
Построить просто - для каждого ребра u,v делайте
next[u].push_back(v);
. Если граф неориентированный, то симметрично добавляйте u в вектор для v.Сначала не забудте выделить сам вектор:
next.resize(n+1);