using System.Collections.Generic;
adj[i] = new List<int>();
public void AddEdge(int src, int dest)
public void TopologicalSort()
var visited = new bool[V];
Stack<int> stack = new Stack<int>();
for(int i = 0; i < V; i++)
for(int j=0; j < count; j++)
Console.Write(stack.Pop() + " ");
private void dfs(int i, Stack<int> stack, bool[] visited)
foreach(var child in children)
dfs(child, stack, visited);
public static void Main()
Console.WriteLine("Topological Sort: \n");
g.AddEdge(5, 0);g.AddEdge(5, 2);g.AddEdge(2, 3);g.AddEdge(3, 1);
g.AddEdge(4, 0);g.AddEdge(4, 1);