code: 
  
  
  
  # A Bipartite Graph is a graph whose vertices can be divided into two independent sets,
  # U and V such that every edge (u, v) either connects a vertex from U to V or a vertex
  # from V to U. In other words, for every edge (u, v), either u belongs to U and v to V,
  # or u belongs to V and v to U. We can also say that there is no edge that connects
  # vertices of same set.
  from queue import Queue
  
  
  
  def  __a  (					lowerCAmelCase_     :      Tuple       )   ->				Any:
  
  
  
  
  
  
  						'''simple docstring'''
  
  
  
  						UpperCAmelCase_=     Queue()
  						UpperCAmelCase_=     [False] * len(lowerCAmelCase_       )
  						UpperCAmelCase_=     [-1] * len(lowerCAmelCase_       )
  
  						def bfs():
  												while not queue.empty():
  																		UpperCAmelCase_=     queue.get()
  																		UpperCAmelCase_=     True
  
  																		for neighbour in graph[u]:
  																								if neighbour == u:
  																														return False
  
  																								if color[neighbour] == -1:
  																														UpperCAmelCase_=     1 - color[u]
  																														queue.put(lowerCAmelCase_       )
  
  																								elif color[neighbour] == color[u]:
  																														return False
  
  												return True
  
  						for i in range(len(lowerCAmelCase_       )       ):
  												if not visited[i]:
  																		queue.put(lowerCAmelCase_       )
  																		UpperCAmelCase_=     0
  																		if bfs() is False:
  																								return False
  
  						return True
  
  
  if __name__ == "__main__":
  	# Adjacency List of graph
  	print(check_bipartite({0: [1, 3], 1: [0, 2], 2: [1, 3], 3: [0, 2]}))
  
  
  
  
  
style_context: 
  
  
  
  from .prime_check import Test
  
  Test()
  
  
  
  
  