25.py
1 from lib import * 2 3 input = read_input(2018, 25) 4 5 6 coords = [tuple(map(int, line.split(","))) for line in input.splitlines()] 7 uf = UnionFind(len(coords)) 8 for i in range(len(coords)): 9 for j in range(i + 1, len(coords)): 10 if sum(abs(a - b) for a, b in zip(coords[i], coords[j])) <= 3: 11 uf.merge(i, j) 12 13 print(len(set(map(uf.find, range(len(coords))))))