/* ** This is a C++ implementation for ** Robert Endre Tarjan's algorithm for ** Topological Sort. */ #include <cstdio> #include <bitset> #include <vector> #include <stack> using namespace std; #define MAX 100 vector<int> adjList[MAX+7], solution; bitset<MAX+7> visited; int V; void subprocess(int u,stack<int> &S) { visited[u]=true; int v; for(int i=0;i<(int)adjList[u].size();i++) { v=adjList[u][i]; if(!visited[v]) subprocess(v,S); } S.push(u); } void process() { stack<int> S; visited.reset(); for(int u=0;u<V;u++) if(!visited[u]) subprocess(u,S); solution.clear(); while(!S.empty()) solution.push_back(S.top()), S.pop(); } int main() { /* code */ return 0; }