Topological Sorting

#include<bits/stdc++.h>
using namespace std;
long long visited[100];
vector <int> grp[200];
map<int,int>vis;
int n;
int topologicalSortUtill(int v, stack<int> &St)
{
    vis[v] = 1;
    int l=grp[v].size();
    int u;
    for(int i=0;i<l;i++)
    {
        u=grp[v][i];
        if (!vis[u])
           topologicalSortUtill(u, St);

    }
    St.push(v);
}
int  topologicalSort()
 {
     stack<int>st;

     for(int i=0;i<n;i++)
        vis[i]=0;
     for(int i=0;i<n;i++)
        if(vis[i]==0)
        topologicalSortUtill(i,st);
        while(st.empty()==0)
        {
            cout<<st.top()<<" ";
            st.pop();
        }
 }
int main()
{
    int m,i,j,a,b;
    cin>>n>>m;
    for(i=1; i<=m; i++)
    {
        cin>>a>>b;
        grp[a].push_back(b);
    }
    //for(i=0;i<n;i++)
   topologicalSort();
    return 0;
}
/*
6 6
5 2
5 0
4 0
4 1
2 3
3 1
*/

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

BSF

Job Sequencing Problem

Dijkstra's shortest path algorithm-2