




# 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    UpperCAmelCase__	(  lowerCamelCase ):
  lowercase     :Optional[Any]   						=    Queue()
  lowercase     :Dict   						=    [False] * len(lowerCamelCase )
  lowercase     :str   						=    [-1] * len(lowerCamelCase )

  def bfs():
    while not queue.empty():
      lowercase     :int   						=    queue.get()
      lowercase     :str   						=    True

      for neighbour in graph[u]:
        if neighbour == u:
          return False

        if color[neighbour] == -1:
          lowercase     :Dict   						=    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 )
      lowercase     :List[str]   						=    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]}))









from unittest.mock import patch

import datasets
from datasets import Dataset



def    UpperCAmelCase__	(  ):
  lowercase     :Any   						=    Dataset.from_dict({"col_1": [3, 2, 0, 1]} )

  with patch("tqdm.auto.tqdm" ) as mock_tqdm:
    datasets.disable_progress_bar()
    dset.map(lambda lowerCamelCase : {"col_2": x["col_1"] + 1} )
    mock_tqdm.assert_not_called()

    mock_tqdm.reset_mock()

    datasets.enable_progress_bar()
    dset.map(lambda lowerCamelCase : {"col_2": x["col_1"] + 1} )
    mock_tqdm.assert_called()



