This Python program checks if an undirected graph is bipartite using BFS and a color-coding approach. A bipartite graph can be divided into two sets of vertices such that no two vertices within the same set are connected by an edge.
In graph theory, a bipartite graph is a graph whose vertices can be divided into two disjoint sets such that no two vertices within the same set are adjacent. We can use the Breadth-First Search (BFS) algorithm to check if an undirected graph is bipartite.
Problem Statement
Write a Python program to determine if an undirected graph is bipartite using BFS.
Python Program to Check if Undirected Graph is Bipartite using BFS
from collections import defaultdict, deque
class Graph:
    def __init__(self, vertices):
        self.graph = defaultdict(list)
        self.V = vertices
    def add_edge(self, u, v):
        self.graph[u].append(v)
        self.graph[v].append(u)
    def is_bipartite(self, src):
        color = [-1] * self.V
        color[src] = 1
        queue = deque()
        queue.append(src)
        while queue:
            u = queue.popleft()
            for v in self.graph[u]:
                if color[v] == -1:
                    color[v] = 1 - color[u]
                    queue.append(v)
                elif color[v] == color[u]:
                    return False
        return True
def is_bipartite_graph(graph):
    g = Graph(len(graph))
    for u, neighbors in enumerate(graph):
        for v in neighbors:
            g.add_edge(u, v)
    return g.is_bipartite(0)  # Start BFS from the first vertex
# Example usage:
if __name__ == "__main__":
    graph = [[1, 3], [0, 2], [1, 3], [0, 2]]
    if is_bipartite_graph(graph):
        print("The given graph is bipartite.")
    else:
        print("The given graph is not bipartite.")
How It Works
- We represent the graph as an adjacency list using defaultdict.
- We create a function is_bipartitethat takes the source vertex as an argument and performs a BFS traversal of the graph while assigning colors (0 or 1) to vertices.
- If at any point during BFS, we encounter an adjacent vertex with the same color as the current vertex, the graph is not bipartite, and we return False.
- If the BFS traversal completes without any conflicts in vertex coloring, we return True.
- The is_bipartite_graphfunction converts the given graph into theGraphclass and starts BFS from the first vertex.
Input/Output

 
															 
								