

@@ 0,0 +1,63 @@ 



# Python3 Program to print BFS traversal 







from collections import defaultdict 







# This class represents a directed graph 



# using adjacency list representation 



class Graph: 







# Constructor 



def __init__(self): 







# default dictionary to store graph 



self.graph = defaultdict(list) 







# function to add an edge to graph 



def addEdge(self,u,v): 



self.graph[u].append(v) 







# Function to print a BFS of graph 



def BFS(self, s): 







# Mark all the vertices as not visited 



visited = [False] * (len(self.graph)) 







# Create a queue for BFS 



queue = [] 







# Mark the source node as 



# visited and enqueue it 



queue.append(s) 



visited[s] = True 







while queue: 







# Dequeue a vertex from 



# queue and print it 



s = queue.pop(0) 



print (s, end = " ") 







# Get all adjacent vertices of the 



# dequeued vertex s. If a adjacent 



# has not been visited, then mark it 



# visited and enqueue it 



for i in self.graph[s]: 



if visited[i] == False: 



queue.append(i) 



visited[i] = True 







# Driver code 











g = Graph() 



g.addEdge(0, 1) 



g.addEdge(0, 2) 



g.addEdge(1, 2) 



g.addEdge(2, 0) 



g.addEdge(2, 3) 



g.addEdge(3, 3) 







print ("Following is Breadth First Traversal" 



" (starting from vertex 2)") 



g.BFS(2) 



