#include #include #include using namespace std; void topologicalSortUtil(int v, const vector> &adj, vector &visited, stack &Stack) { visited[v] = true; for (int i : adj[v]) { if (!visited[i]) { topologicalSortUtil(i, adj, visited, Stack); } } Stack.push(v); } vector topologicalSort(int V, const vector> &adj) { stack Stack; vector visited(V, false); for (int i = 0; i < V; ++i) { if (!visited[i]) { topologicalSortUtil(i, adj, visited, Stack); } } vector result; while (!Stack.empty()) { result.push_back(Stack.top()); Stack.pop(); } return result; } int main() { int V = 6; vector> adj(V); adj[5] = {2, 0}; adj[4] = {0, 1}; adj[2] = {3}; adj[3] = {1}; vector result = topologicalSort(V, adj); cout << "Topological Sort: "; for (int v : result) { cout << v << " "; } cout << endl; return 0; }