MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
hypergraphlib_components.cpp
Aller à la documentation de ce fichier.
1 //####//------------------------------------------------------------
2 //####//------------------------------------------------------------
3 //####// MAGiC
4 //####// Jean Christophe Cuilliere et Vincent FRANCOIS
5 //####// Departement de Genie Mecanique - UQTR
6 //####//------------------------------------------------------------
7 //####// MAGIC est un projet de recherche de l equipe ERICCA
8 //####// du departement de genie mecanique de l Universite du Quebec a Trois Rivieres
9 //####// http://www.uqtr.ca/ericca
10 //####// http://www.uqtr.ca/
11 //####//------------------------------------------------------------
12 //####//------------------------------------------------------------
13 //####//
14 //####// hypergraphlib_components.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:54:00 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #include "hypergraphlib_platform.h"
23 
25 #include "hypergraphlib_dfs.h"
26 #include "hypergraphlib_graph.h"
27 #include "hypergraphlib_node.h"
28 
41 namespace HypergraphLib {
42 
43 void FindSCC(Graph * __G, std::set < std::set < Node * > > & __components)
44 {
45  std::map < int, Node * > unvisitedNodes = __G->GetNodes();
46 
47  while (unvisitedNodes.size())
48  {
49  std::set < Node * > depthFirstSearchNodes;
50  dfs((unvisitedNodes.begin())->second, depthFirstSearchNodes);
51  __components.insert ( depthFirstSearchNodes );
52  for ( std::set < Node * >::const_iterator it = depthFirstSearchNodes.begin();
53  it != depthFirstSearchNodes.end();
54  it++)
55  unvisitedNodes.erase((*it)->Id());
56  }
57 }
58 
59 }
60 
HypergraphLib::Graph::GetNodes
const MapNodesById & GetNodes() const
Definition: hypergraphlib_graph.h:178
hypergraphlib_dfs.h
HypergraphLib
Definition: hypergraphlib_arc.cpp:32
hypergraphlib_graph.h
hypergraphlib_platform.h
HypergraphLib::dfs
void HYPERGRAPHLIB_ITEM dfs(Node *__n, std::set< Node * > &__depthFirstSearchNodes)
Definition: hypergraphlib_dfs.cpp:31
HypergraphLib::FindSCC
void FindSCC(Graph *__G, std::set< std::set< Node * > > &__components)
Definition: hypergraphlib_components.cpp:43
hypergraphlib_components.h
hypergraphlib_node.h