36 lines
949 B
Python
36 lines
949 B
Python
from collections import defaultdict
|
|
|
|
|
|
def part_1(data):
|
|
ports = [list(map(int, line.split("/"))) for line in data.splitlines()]
|
|
in_to_out = defaultdict(list)
|
|
for index, (i, o) in enumerate(ports):
|
|
in_to_out[i].append((o, index))
|
|
in_to_out[o].append((i, index))
|
|
|
|
max_sum = 0
|
|
max_len = (0, 0)
|
|
bs = [(0, [], 0, 0)]
|
|
|
|
while bs:
|
|
current_port, used, current_sum, current_len = bs.pop()
|
|
max_sum = max(max_sum, current_sum)
|
|
max_len = max(max_len, (current_len, current_sum))
|
|
for out_port, index in in_to_out[current_port]:
|
|
if index in used:
|
|
continue
|
|
new_sum = current_sum + current_port + out_port
|
|
bs.append((out_port, used + [index], new_sum, current_len + 1))
|
|
print(max_sum)
|
|
print(max_len[1])
|
|
|
|
|
|
def main():
|
|
with open("i24.txt") as f:
|
|
data = f.read()
|
|
part_1(data)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|