// // initialization: builds tree, skeleton graphs and cross references // void DynamicSPQRTree::init(edge eG) { createSPQR(bcproper(eG)); rootTreeAt(eG); m_sk.init(m_T, nullptr); m_skelEdge.init(m_H, nullptr); m_mapV.init(m_H, nullptr); m_cpV = nullptr; }
SList<node>& DynamicSPQRForest::findPathSPQR (node sH, node tH) const { node vB = bComponent(m_hNode_gNode[sH],m_hNode_gNode[tH]); if (!vB) return *OGDF_NEW SList<node>; if (!m_bNode_SPQR[vB]) { if (m_bNode_hEdges[vB].size()<3) return *OGDF_NEW SList<node>; createSPQR(vB); } node rT; SList<node>& pT = findPathSPQR(sH,tH,rT); if (pT.empty()) if (rT) pT.pushBack(rT); return pT; }