Merge pull request #3207 from aimbot6120:swtfix

replaced recursion DFS to stack DFS
pull/3221/head
Pranay Pandit 3 years ago committed by GitHub
parent fe43396536
commit da967e070e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 29
      modules/text/src/text_detector_swt.cpp

@ -7,6 +7,7 @@
#include <unordered_map>
#include <limits>
#include <stack>
using namespace std;
@ -91,15 +92,25 @@ void addEdge(std::vector< std::vector<int> >& adj, int u, int v)
static
void DFSUtil(int v, std::vector<bool> & visited, std::vector< std::vector<int> >& adj, int label, std::vector<int> &component_id)
{
// Mark the current node as visited and label it as belonging to the current component
visited[v] = true;
component_id[v] = label;
// Recur for all the vertices
// adjacent to this vertex
for (size_t i = 0; i < adj[v].size(); i++) {
int neighbour = adj[v][i];
if (!visited[neighbour]) {
DFSUtil(neighbour, visited, adj, label, component_id);
stack<int> s;
s.push(v);
while(!s.empty()){
v = s.top();
s.pop();
if(!visited[v])
{
// Mark the current node as visited and label it as belonging to the current component
visited[v] = true;
component_id[v] = label;
// Recur for all the vertices
// adjacent to this vertex
for (size_t i = 0; i < adj[v].size(); i++) {
int neighbour = adj[v][i];
if(!visited[neighbour])
{
s.push(neighbour);
}
}
}
}
}

Loading…
Cancel
Save