mirror of
https://github.com/bertptrs/adventofcode.git
synced 2025-12-25 12:50:32 +01:00
28 lines
563 B
Python
28 lines
563 B
Python
from typing import TextIO
|
|
|
|
import networkx # type: ignore
|
|
|
|
|
|
def read_graph(data: TextIO) -> networkx.DiGraph:
|
|
graph = networkx.DiGraph()
|
|
|
|
for line in data:
|
|
a, b = line.strip().split(')')
|
|
graph.add_edge(a, b)
|
|
|
|
return graph
|
|
|
|
|
|
def part1(data: TextIO) -> int:
|
|
graph = read_graph(data)
|
|
|
|
paths = networkx.single_source_shortest_path_length(graph, 'COM')
|
|
|
|
return sum(paths.values())
|
|
|
|
|
|
def part2(data: TextIO) -> int:
|
|
graph = read_graph(data).to_undirected()
|
|
|
|
return networkx.shortest_path_length(graph, 'YOU', 'SAN') - 2
|