Is Graph Bipartite? (Leetcode 785) [BFS]

Problem Link: https://leetcode.com/problems/is-graph-bipartite/

from collections import defaultdict
class Solution:
    def isBipartite(self, graph: List[List[int]]) -> bool:
        
        n=len(graph)
        adj=defaultdict(list)
        for i in range(n):
            for j in range(len(graph[i])):
                adj[i].append(graph[i][j])
        
        # -1 means uncoloured (unvisited)
        # 0 means Red (visited)
        # 1 means Blue (visited)
        visited=[-1 for i in range(n)]
        for i in range(n):
            if(visited[i]==-1):
                q=[i]
                visited[i]=0
                while(q):
                    for i in range(len(q)):

                        curr=q.pop()
                        currcolor=visited[curr]
                        for i in adj[curr]:
                            if(visited[i]==-1):
                                q.insert(0,i)
                                visited[i]=1^currcolor
                            else:
                                if(currcolor==visited[i]):
                                    return False
        return True     

Last updated