# Topological Sort

Here’s an example implementation of Topological Sort algorithm:

Python

from collections import defaultdict

# making a Class for representing a graph
class Graph:
def __init__(self, vertices):
# dictionary that contains adjacency List
self.graph = defaultdict(list)
# number of vertices
self.V = vertices

# function for adding an edge to graph
self.graph[u].append(v)

# A recursive function used by topologicalSort
def topologicalSortUtil(self, v, visited, stack):

# Marking the current node as visited.
visited[v] = True

for i in self.graph[v]:
if visited[i] == False:
self.topologicalSortUtil(i, visited, stack)

# Pushing current vertex to stack that stores result
stack.append(v)

# Topological Sort function.
def topologicalSort(self):

# Marking all the vertices as not visited
visited = [False]*self.V
stack = []

# the sort starts from all vertices one by one
for i in range(self.V):
if visited[i] == False:
self.topologicalSortUtil(i, visited, stack)

# Printing contents of the stack
print(stack[::-1])

g = Graph(6)