Toplogical sorting in Graph | using stack and DFS

Topological sort | using DFS and stack

Given a Directed Acyclic Graph (DAG) with V vertices and E edges, Find any Topological Sorting of that Graph.


Example 1:

Input:

Output:
1
Explanation:
The output 1 denotes that the order is
valid. So, if you have, implemented
your function correctly, then output
would be 1 for all test cases.
One possible Topological order for the
graph is 3, 2, 1, 0.

Example 2:

Input:

Output:
1
Explanation:
The output 1 denotes that the order is
valid. So, if you have, implemented
your function correctly, then output
would be 1 for all test cases.
One possible Topological order for the
graph is 5, 4, 2, 1, 3, 0.


Your Task:
You don't need to read input or print anything. Your task is to complete the function topoSort() 
 which takes the integer V denoting the number of vertices and adjacency list as input parameters and returns an array consisting of a the vertices in Topological order. As there are multiple Topological orders possible, you may return any of them. If your returned topo sort is correct then console output will be 1 else 0.


Expected Time Complexity: O(V + E).
Expected Auxiliary Space: O(V).


Constraints:
  104
  (N*(N-1))/2


solution :



class Solution

{

public:

//Function to return list containing vertices in Topological order. 

void dfs(int v , stack<int>&st , vector<bool>&visited , vector<int>adj[])

{

     visited[v] = true;

      vector<int>x = adj[v];

         for(int i = 0 ; i < x.size() ; i++)

         {

             if(!visited[x[i]])

               dfs(x[i] , st , visited , adj);

         }

       st.push(v); 

     

}

vector<int> topoSort(int V, vector<int> adj[]) 

{

    stack<int>st;

    vector<bool>visited(V , false);

    for(int i = 0 ;  i < V ; i++)

    {

        if(!visited[i])

         dfs(i , st ,visited , adj);

    }

    vector<int>result;

    while(!st.empty())

    {

        int x = st.top();

        st.pop();

        result.push_back(x);

    }

    return result;

}

};



Comments