24.py
1 from lib import * 2 3 input = read_input(2017, 24) 4 5 lines = input.splitlines() 6 7 8 comps = sorted([tuple(sorted(map(int, line.split("/")))) for line in lines]) 9 used = set() 10 11 12 def solve(port): 13 best = 0 14 for i, (p, q) in enumerate(comps): 15 if i in used: 16 continue 17 if q == port: 18 p, q = q, p 19 if p != port: 20 continue 21 used.add(i) 22 best = max(best, p + q + solve(q)) 23 used.remove(i) 24 return best 25 26 27 print(solve(0)) 28 29 30 comps = sorted([tuple(sorted(map(int, line.split("/")))) for line in lines]) 31 used = set() 32 33 34 def solve(port): 35 best = 0, 0 36 for i, (p, q) in enumerate(comps): 37 if i in used: 38 continue 39 if q == port: 40 p, q = q, p 41 if p != port: 42 continue 43 used.add(i) 44 a, b = solve(q) 45 best = max(best, (a + 1, p + q + b)) 46 used.remove(i) 47 return best 48 49 50 print(solve(0)[1])