Skip to content

Commit f16d882

Browse files
committed
scc logic modified and test added
1 parent f490d33 commit f16d882

File tree

4 files changed

+18
-15
lines changed

4 files changed

+18
-15
lines changed

Headers/0003_Graph/0004_StronglyConnectedComponents.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class StronglyConnectedComponentsGraph
2929
vector<vector<int>> _allConnectedComponents;
3030
SCCNode* MakeOrFindNode(int value);
3131
void DepthFirstSearchOnGraphG(SCCNode* DFSNode);
32-
vector<int> DepthFirstSearchOnGraphT(SCCNode* DFSNode, vector<int> connectedComponents);
32+
void DepthFirstSearchOnGraphT(SCCNode* DFSNode, vector<int>& connectedComponents);
3333
public:
3434
void PushDirectedEdge(int valueU, int valueV);
3535
void PushSingleNode(int valueU);

SourceCodes/0003_Graph/0004_StronglyConnectedComponents.cc

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ void StronglyConnectedComponentsGraph::DepthFirstSearchOnGraphG(SCCNode* nodeU)
4747
this->_nodesFinishingTimeOrder.push_front(nodeU);
4848
}
4949

50-
vector<int> StronglyConnectedComponentsGraph::DepthFirstSearchOnGraphT(SCCNode* nodeU, vector<int> connectedComponents)
50+
void StronglyConnectedComponentsGraph::DepthFirstSearchOnGraphT(SCCNode* nodeU, vector<int>& connectedComponents)
5151
{
5252
nodeU->color = GRAY;
5353
connectedComponents.push_back(nodeU->data);
@@ -60,7 +60,6 @@ vector<int> StronglyConnectedComponentsGraph::DepthFirstSearchOnGraphT(SCCNode*
6060
}
6161
}
6262
nodeU->color = BLACK;
63-
return connectedComponents;
6463
}
6564

6665
void StronglyConnectedComponentsGraph::PushDirectedEdge(int valueU, int valueV)
@@ -105,8 +104,8 @@ void StronglyConnectedComponentsGraph::DFSOnGraphT()
105104
if (iterator->color == WHITE)
106105
{
107106
vector<int> connectedComponents;
108-
auto result = this->DepthFirstSearchOnGraphT(iterator, connectedComponents);
109-
this->_allConnectedComponents.push_back(result);
107+
this->DepthFirstSearchOnGraphT(iterator, connectedComponents);
108+
this->_allConnectedComponents.push_back(connectedComponents);
110109
}
111110
}
112111
}

Tests/0000_CommonUtilities/UnitTestHelper.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@ class UnitTestHelper
6363
{
6464
result += to_string(it) + " ";
6565
}
66+
if (!result.empty())
67+
{
68+
result.pop_back();
69+
}
6670
result += "]";
6771
}
6872
return result;

Tests/0003_Graph/0004_StronglyConnectedComponentsTest.cc

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,22 @@ namespace StronglyConnectedComponentsTest
1111
StronglyConnectedComponentsGraph graph;
1212

1313
graph.PushDirectedEdge(1, 2);
14+
graph.PushDirectedEdge(1, 5);
1415
graph.PushDirectedEdge(2, 3);
15-
graph.PushDirectedEdge(2, 5);
16-
graph.PushDirectedEdge(2, 6);
17-
graph.PushDirectedEdge(3, 4);
18-
graph.PushDirectedEdge(3, 7);
19-
graph.PushDirectedEdge(4, 3);
20-
graph.PushDirectedEdge(4, 8);
16+
graph.PushDirectedEdge(2, 4);
17+
graph.PushDirectedEdge(3, 2);
18+
graph.PushDirectedEdge(4, 4);
2119
graph.PushDirectedEdge(5, 1);
22-
graph.PushDirectedEdge(5, 6);
20+
graph.PushDirectedEdge(5, 4);
21+
graph.PushDirectedEdge(6, 1);
22+
graph.PushDirectedEdge(6, 3);
2323
graph.PushDirectedEdge(6, 7);
24-
graph.PushDirectedEdge(7, 6);
24+
graph.PushDirectedEdge(7, 3);
2525
graph.PushDirectedEdge(7, 8);
26-
graph.PushDirectedEdge(8, 8);
26+
graph.PushDirectedEdge(8, 6);
2727

2828
string actualResult = unitTestHelper.VerifyVectorResult(graph.FindAllStronglyConnectedComponents());
29-
string expectedResult = "";
29+
string expectedResult = "[6 8 7][1 5][2 3][4]";
3030
EXPECT_EQ(actualResult, expectedResult);
3131
}
3232
}

0 commit comments

Comments
 (0)