SNAP Library 2.1, User Reference  2013-09-25 10:47:25
SNAP, a general purpose, high performance system for analysis and manipulation of large networks
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
TBiConVisitor Class Reference

Biconnected componetns Depth-First-Search visitor class. More...

#include <cncom.h>

List of all members.

Public Member Functions

 TBiConVisitor ()
 TBiConVisitor (const int &Nodes)
void DiscoverNode (int NId)
void FinishNode (const int &NId)
void ExamineEdge (const int &NId1, const int &NId2)
void TreeEdge (const int &NId1, const int &NId2)
void BackEdge (const int &NId1, const int &NId2)
void FwdEdge (const int &NId1, const int &NId2)

Public Attributes

THash< TInt, TIntPrVnLowH
THash< TInt, TIntParentH
TSStack< TIntPrStack
TCnComV CnComV
TIntSet NSet
TInt Time

Detailed Description

Biconnected componetns Depth-First-Search visitor class.

Definition at line 192 of file cncom.h.


Constructor & Destructor Documentation

Definition at line 201 of file cncom.h.

{ }
TBiConVisitor::TBiConVisitor ( const int &  Nodes) [inline]

Definition at line 202 of file cncom.h.

: VnLowH(Nodes), ParentH(Nodes), Stack(Nodes) { }

Member Function Documentation

void TBiConVisitor::BackEdge ( const int &  NId1,
const int &  NId2 
) [inline]

Definition at line 221 of file cncom.h.

                                                  {
    if (ParentH.IsKey(NId1) && ParentH.GetDat(NId1)!=NId2) {
      Stack.Push(TIntPr(NId1, NId2));
      VnLowH.GetDat(NId1).Val2 = TMath::Mn(VnLowH.GetDat(NId1).Val2, VnLowH.GetDat(NId2).Val1); } }
void TBiConVisitor::DiscoverNode ( int  NId) [inline]

Definition at line 203 of file cncom.h.

{ Time++; VnLowH.AddDat(NId, TIntPr(Time, Time)); }
void TBiConVisitor::ExamineEdge ( const int &  NId1,
const int &  NId2 
) [inline]

Definition at line 217 of file cncom.h.

{ }
void TBiConVisitor::FinishNode ( const int &  NId) [inline]

Definition at line 204 of file cncom.h.

                                  {
    if (! ParentH.IsKey(NId)) { return; }  const int Prn = ParentH.GetDat(NId);
    VnLowH.GetDat(Prn).Val2 = TMath::Mn(VnLowH.GetDat(Prn).Val2, VnLowH.GetDat(NId).Val2);
    if (VnLowH.GetDat(NId).Val2 >= VnLowH.GetDat(Prn).Val1) {
      NSet.Clr(false);
      while (! Stack.Empty() && Stack.Top() != TIntPr(Prn, NId)) {
        const TIntPr& Top = Stack.Top();
        NSet.AddKey(Top.Val1);  NSet.AddKey(Top.Val2); Stack.Pop();  }
      if (! Stack.Empty()) {
        const TIntPr& Top = Stack.Top();
        NSet.AddKey(Top.Val1);  NSet.AddKey(Top.Val2); Stack.Pop(); }
      TIntV NIdV; NSet.GetKeyV(NIdV);  NIdV.Sort();
      CnComV.Add(NIdV); } }
void TBiConVisitor::FwdEdge ( const int &  NId1,
const int &  NId2 
) [inline]

Definition at line 225 of file cncom.h.

{ }
void TBiConVisitor::TreeEdge ( const int &  NId1,
const int &  NId2 
) [inline]

Definition at line 218 of file cncom.h.

                                                  {
    ParentH.AddDat(NId2, NId1);
    Stack.Push(TIntPr(NId1, NId2)); }

Member Data Documentation

Definition at line 197 of file cncom.h.

Definition at line 198 of file cncom.h.

Definition at line 195 of file cncom.h.

Definition at line 196 of file cncom.h.

Definition at line 199 of file cncom.h.

Definition at line 194 of file cncom.h.


The documentation for this class was generated from the following file: