OneCompiler

topological sort

169

from collections import defaultdict

class Graph:
def init(self,vert):
self.v=vert
self.graph=defaultdict(list)

def addedge(self,u,v):
self.graph[u].append(v)

def topsortutil(self,v,visited,stack):
visited[v]=True
for i in self.graph[v]:
if visited[i]==False:
self.topsortutil(i,visited,stack)
stack.insert(0,v)

def topsort(self):
visited=[False]*self.v
stack=[]
for i in range(self.v):
if visited[i]==False:
self.topsortutil(i,visited,stack)
print(stack)

g=Graph(5)
g.addedge(0,1)
g.addedge(0,2)
g.addedge(1,4)
g.addedge(1,3)
g.addedge(2,3)
g.addedge(3,4)
print("TOP SORT")
g.topsort()