Untitled
unknown
plain_text
2 years ago
885 B
9
Indexable
#include<vector>
#include<stack>
void dfs(int node, vector<vector<int>> &adjlist,vector<bool> &vis,stack<int> &s){
vis[node]=true;
for(auto nbr:adjlist[node]){
if(!vis[nbr]){
dfs(nbr,adjlist,vis,s);
}
}
s.push(node);
}
vector<int> topologicalSort(vector<vector<int>> &edges, int v, int e) {
vector<vector<int>> adjlist(v); //making adj list
for(int i=0;i<e;i++){ //edges.size()
int x=edges[i][0];
int y=edges[i][1];
adjlist[x].push_back(y);
// adjlist[y].push_back(x);
}
vector<bool> vis(v);
stack<int> s;
vector<int> ans;
for(int i=0;i<v;i++){
if(!vis[i]){
dfs(i,adjlist,vis,s);
}
}
while(!s.empty()){
int num=s.top();
ans.push_back(num);
s.pop();
}
return ans;
}Editor is loading...