|
@ -0,0 +1,37 @@ |
|
|
|
|
|
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) |