|
|
@ -0,0 +1,42 @@ |
|
|
|
from collections import defaultdict |
|
|
|
|
|
|
|
#--class for directed graph with adjacency list representation |
|
|
|
class Graph: |
|
|
|
|
|
|
|
#--Constructor of the class |
|
|
|
def __init__(self): |
|
|
|
#--default dictionary to store graph |
|
|
|
self.graph = defaultdict(list) |
|
|
|
|
|
|
|
''' |
|
|
|
--function to add an edge |
|
|
|
--inputs, starting point of the graph |
|
|
|
''' |
|
|
|
def addEdge(self,u,v): |
|
|
|
self.graph[u].append(v) |
|
|
|
|
|
|
|
''' |
|
|
|
--to print a BFS of graph |
|
|
|
--inputs, starting point of the graph |
|
|
|
--Prints the BFS starting from the input point |
|
|
|
''' |
|
|
|
def BFS(self, s): |
|
|
|
|
|
|
|
# Mark all the vertices as not visited |
|
|
|
visited = [False] * (len(self.graph)) |
|
|
|
|
|
|
|
queue = [] |
|
|
|
|
|
|
|
# Mark the source node as visited and enqueue it |
|
|
|
queue.append(s) |
|
|
|
visited[s] = True |
|
|
|
|
|
|
|
while queue: |
|
|
|
s = queue.pop(0) |
|
|
|
print (s, end = " ") |
|
|
|
|
|
|
|
for i in self.graph[s]: |
|
|
|
if visited[i] == False: |
|
|
|
queue.append(i) |
|
|
|
visited[i] = True |
|
|
|
|