Introduction A graph is bipartite if it possible to color it using two colours. It turns out the a graph is bipartite exactly when it does not contain a cycle with an odd number of edges. Implementation def isBipartite(graph): N = len(graph) color = {} def go(node): for adj in graph[node]: if adj in color: if color[adj] == color[node]: return False else: color[adj] = -color[node] if not go(adj): return False return True for node in range(N): if node not in color: color[node] = 1 if not go(node): return False return True Complexity Time complexity: Space complexity: