Spaces:
Running
Running
from itertools import combinations | |
def solve(): | |
with open("./input.txt") as f: | |
lines = f.readlines() | |
graph = {} | |
for line in lines: | |
a, b = line.strip().split('-') | |
graph.setdefault(a, set()).add(b) | |
graph.setdefault(b, set()).add(a) | |
# Part 1 | |
three_connected_count = 0 | |
for combo in combinations(graph.keys(), 3): | |
a, b, c = combo | |
if b in graph[a] and c in graph[a] and a in graph[b] and c in graph[b] and a in graph[c] and b in graph[c]: | |
if any(x.startswith('t') for x in combo): | |
three_connected_count += 1 | |
print(three_connected_count) | |
# Part 2 | |
max_clique_size = 0 | |
max_clique = None | |
for i in range(1, len(graph) + 1): | |
for combo in combinations(graph.keys(), i): | |
is_clique = True | |
for pair in combinations(combo, 2): | |
if pair[1] not in graph[pair[0]]: | |
is_clique = False | |
break | |
if is_clique: | |
if len(combo) > max_clique_size: | |
max_clique_size = len(combo) | |
max_clique = sorted(list(combo)) | |
print(",".join(max_clique)) | |
solve() |