25
25
*/
26
26
namespace graph {
27
27
28
+ /* *
29
+ * @namespace topological_sort
30
+ * @brief Topological Sort Algorithm
31
+ */
32
+ namespace topological_sort {
28
33
/* *
29
34
* @class Graph
30
35
* @brief Class that represents a directed graph and provides methods for
@@ -111,6 +116,7 @@ std::vector<int> topologicalSort(const Graph& g) {
111
116
}
112
117
return ans;
113
118
}
119
+ } // namespace topological_sort
114
120
} // namespace graph
115
121
116
122
/* *
@@ -121,14 +127,14 @@ static void test() {
121
127
// Test 1
122
128
std::cout << " Testing for graph 1\n " ;
123
129
int n_1 = 6 ;
124
- graph::Graph graph1 (n_1);
130
+ graph::topological_sort:: Graph graph1 (n_1);
125
131
graph1.addEdge (4 , 0 );
126
132
graph1.addEdge (5 , 0 );
127
133
graph1.addEdge (5 , 2 );
128
134
graph1.addEdge (2 , 3 );
129
135
graph1.addEdge (3 , 1 );
130
136
graph1.addEdge (4 , 1 );
131
- std::vector<int > ans_1 = graph::topologicalSort (graph1);
137
+ std::vector<int > ans_1 = graph::topological_sort:: topologicalSort (graph1);
132
138
std::vector<int > expected_1 = {5 , 4 , 2 , 3 , 1 , 0 };
133
139
std::cout << " Topological Sorting Order: " ;
134
140
for (int i : ans_1) {
@@ -141,14 +147,14 @@ static void test() {
141
147
// Test 2
142
148
std::cout << " Testing for graph 2\n " ;
143
149
int n_2 = 5 ;
144
- graph::Graph graph2 (n_2);
150
+ graph::topological_sort:: Graph graph2 (n_2);
145
151
graph2.addEdge (0 , 1 );
146
152
graph2.addEdge (0 , 2 );
147
153
graph2.addEdge (1 , 2 );
148
154
graph2.addEdge (2 , 3 );
149
155
graph2.addEdge (1 , 3 );
150
156
graph2.addEdge (2 , 4 );
151
- std::vector<int > ans_2 = graph::topologicalSort (graph2);
157
+ std::vector<int > ans_2 = graph::topological_sort:: topologicalSort (graph2);
152
158
std::vector<int > expected_2 = {0 , 1 , 2 , 4 , 3 };
153
159
std::cout << " Topological Sorting Order: " ;
154
160
for (int i : ans_2) {
@@ -161,12 +167,12 @@ static void test() {
161
167
// Test 3 - Graph with cycle
162
168
std::cout << " Testing for graph 3\n " ;
163
169
int n_3 = 3 ;
164
- graph::Graph graph3 (n_3);
170
+ graph::topological_sort:: Graph graph3 (n_3);
165
171
graph3.addEdge (0 , 1 );
166
172
graph3.addEdge (1 , 2 );
167
173
graph3.addEdge (2 , 0 );
168
174
try {
169
- graph::topologicalSort (graph3);
175
+ graph::topological_sort:: topologicalSort (graph3);
170
176
} catch (std::invalid_argument& err) {
171
177
assert (std::string (err.what ()) == " cycle detected in graph" );
172
178
}
@@ -178,6 +184,6 @@ static void test() {
178
184
* @returns 0 on exit
179
185
*/
180
186
int main () {
181
- test (); // run self test implementations
187
+ test (); // run self test implementations
182
188
return 0 ;
183
189
}
0 commit comments