def valid(length): size = len(red) + len(blue) + 2 source = size - 2 target = size - 1 graph = [] for i in range(size): row = {} for j in range(size): row[j] = 0 graph.append(row) for i in range(len(red)): graph[source][i] = 1 for i in range(len(red), size - 2): graph[i][target] = 1 for i, r in enumerate(red): for j, b in enumerate(blue): if dist(r, b) <= length: graph[i][j + len(red)] = 1 max_flow = edmondsKarp(graph, source, target) return max_flow >= K
def valid(years): size = H + A + 2 source = size - 2 target = size - 1 graph = [] for i in range(size): row = {} for j in range(size): row[j] = 0 graph.append(row) for i in range(H): graph[source][i] = 1 for i in range(H, size - 2): graph[i][target] = 1 for i in range(H): for j in range(A): if win(i, j, years): graph[i][j + H] = 1 max_flow = edmondsKarp(graph, source, target) return max_flow >= A