08_license.py 579 B

12345678910111213141516171819202122
  1. #!/usr/bin/env python3
  2. import sys
  3. from collections import deque
  4. def parse(nums):
  5. nchildren = nums.popleft()
  6. nmeta = nums.popleft()
  7. children = [parse(nums) for i in range(nchildren)]
  8. meta = [nums.popleft() for i in range(nmeta)]
  9. return children, meta
  10. def addmeta(node):
  11. children, meta = node
  12. return sum(meta) + sum(map(addmeta, children))
  13. def value(node):
  14. c, m = node
  15. return sum(value(c[i - 1]) for i in m if 1 <= i <= len(c)) if c else sum(m)
  16. root = parse(deque(map(int, sys.stdin.read().split())))
  17. print(addmeta(root))
  18. print(value(root))