from collections import defaultdict
|
|
|
|
class Graph:
|
|
|
|
def __init__(self):
|
|
|
|
self.graph = defaultdict(list)
|
|
|
|
def addEdge(self,u,v):
|
|
self.graph[u].append(v)
|
|
|
|
def DFSUtil(self,v,visited):
|
|
|
|
visited[v]= True
|
|
print v,
|
|
|
|
for i in self.graph[v]:
|
|
if visited[i] == False:
|
|
self.DFSUtil(i, visited)
|
|
|
|
|
|
def DFS(self,v):
|
|
|
|
visited = [False]*(len(self.graph))
|
|
|
|
self.DFSUtil(v,visited)
|
|
|
|
|
|
g = Graph()
|
|
edges = input("input the number of edges : ")
|
|
print "enter nodes with zero based indexing : "
|
|
for i in range(edges):
|
|
a, b = map(int, raw_input().split())
|
|
g.addEdge(a, b)
|
|
|
|
check = input("DFS check from node : ")
|
|
g.DFS(check)
|