Zanima me kako skrajšati kodo pri tej nalogi. Prilagam kodo.
def kolikodobim(nagr, list, ze):
maks = 0
for nag in nagr:
ali = True
for i in range(len(nag)-1):
if list[nag[i]-1] <= 0:
ali = False
break
if ali:
novil = list
for i in range(len(nag)-1):
novil[nag[i] - 1] -= 1
k = kolikodobim(nagr, novil, nag[-1])
if k > maks:
maks = k
return maks + ze
T = int(input())
for t in range(T):
pn = input().split()
p = int(pn[0])
n = int(pn[1])
nagrade = []
for x in range(p):
nag = []
str = input().split()
if str[0] != 0:
for i in range(1, int(str[0]) + 2):
nag.append(int(str[i]))
nagrade.append(nag)
listki = []
str = input().split()
for i in range(n):
listki.append(int(str[i]))
rez = kolikodobim(nagrade, listki, 0)
print(rez)