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