day 11 done!

This commit is contained in:
2025-12-12 01:00:35 +00:00
parent 5e74d7dcd9
commit a8582c6960
3 changed files with 717 additions and 0 deletions

50
11/ex1.py Normal file
View File

@@ -0,0 +1,50 @@
from collections import deque
START = 'you'
END = 'out'
def dfs_sort(graph):
visited = set()
order = deque()
def dfs_helper(node):
visited.add(node)
for v in graph.get(node, []):
if v not in visited:
dfs_helper(v)
order.appendleft(node)
dfs_helper(START)
return order
def dp(graph, order):
dp = {node: 0 for node in graph}
dp[START] = 1
for node in order:
for neighbor in graph[node]:
dp[neighbor] += dp[node]
return dp[END]
with open('input.txt', 'r') as file:
lines = file.readlines()
graph = {}
for line in lines:
line = line.strip()
nodes = line.split()
node = nodes[0].rstrip(':')
edges = nodes[1:]
graph[node] = edges
graph[END] = []
topological_order = dfs_sort(graph)
pruned_graph = {node: graph[node] for node in topological_order if node in graph}
result = dp(pruned_graph, topological_order)
print(result)