fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. map<int, string> mp;
  5. class Graph
  6. {
  7. int V; list<int>* adj;
  8. public:
  9. Graph(int);
  10.  
  11. void addEdge(int, int);
  12.  
  13. void DFS(int, vector<bool> &, vector<int> &, int &);
  14. void topologicalSort();
  15. };
  16.  
  17. Graph::Graph(int V)
  18. {
  19. this->V = V;
  20. adj = new list<int>[V];
  21. }
  22.  
  23.  
  24. void Graph::addEdge(int v, int w)
  25. {
  26. adj[v].push_back(w);
  27. }
  28.  
  29.  
  30. void Graph::DFS(int v, vector<bool> &explored, vector<int> &finish, int &time)
  31. {
  32. explored[v] = true;
  33. for(int i : adj[v])
  34. if(!explored[i])
  35. DFS(i, explored, finish, time);
  36.  
  37. finish[++time] = v;
  38. }
  39.  
  40. void Graph::topologicalSort()
  41. {
  42. vector<int> finish(V, -1);
  43.  
  44. vector<bool> explored(V, false);
  45. int time = -1;
  46.  
  47. for(int i = 0; i < V; i++)
  48. if(!explored[i])
  49. DFS(i, explored, finish, time);
  50.  
  51. for(int i = V - 1; i >= 0; i--)
  52. cout << mp[finish[i]] << "\n ";
  53. }
  54.  
  55.  
  56. int main()
  57. {
  58.  
  59. mp.insert({ 0, "Review Board" });
  60. mp.insert({ 1, "Hospitality" });
  61. mp.insert({ 2, "Registration" });
  62. mp.insert({ 3, "Finance" });
  63. mp.insert({ 4, "Session" });
  64. mp.insert({ 5, "Approval from TEQIP coordinatopr" });
  65. mp.insert({ 6, "Food" });
  66. mp.insert({ 7, "Paper" });
  67. mp.insert({ 8, "Poster" });
  68. mp.insert({ 9, "Approval from Director" });
  69.  
  70. Graph g(10);
  71. g.addEdge(2, 0);
  72. g.addEdge(7, 0);
  73. g.addEdge(8, 0);
  74. g.addEdge(3, 1);
  75. g.addEdge(6, 1);
  76. g.addEdge(3, 2);
  77. g.addEdge(5, 3);
  78. g.addEdge(0, 4);
  79. g.addEdge(9, 5);
  80. g.addEdge(3, 6);
  81.  
  82. cout << "Topological Sort of the given graph is \n";
  83. g.topologicalSort();
  84.  
  85. return 0;
  86. }
  87.  
Success #stdin #stdout 0s 4324KB
stdin
Standard input is empty
stdout
Topological Sort of the given graph is 
Approval from Director
 Poster
 Paper
 Approval from TEQIP coordinatopr
 Finance
 Food
 Registration
 Hospitality
 Review Board
 Session