示例#1
0
node DynamicSPQRTree::rootTreeAt(node vT)
{
	vT = findSPQR(vT);
	node uT = vT;
	edge eH = nullptr;
	for (;;) {
		edge fH = m_tNode_hRefEdge[uT];
		m_tNode_hRefEdge[uT] = eH;
		if (!fH) break;
		eH = m_hEdge_twinEdge[fH];
		uT = spqrproper(eH);
	}
	m_rootEdge = nullptr;
	return m_bNode_SPQR[m_B.firstNode()] = vT;
}
node DynamicSPQRForest::findSPQR (node vT) const
{
	if (!vT) return vT;
	if (m_tNode_owner[vT]==vT) return vT;
	return m_tNode_owner[vT] = findSPQR(m_tNode_owner[vT]);
}