Below is a template is cut point, also cut_vertex_num[] arrangement (array) What is cut-point record
int cut_vertex_num[];void dfs (int cur,int pa) { int child=0,flag=0,i; low[cur]=dfn[cur]=++depth; For (I=0;i<adj[cur].size (); i++) { int next=adj[cur][i]; if (!dfn[next])//If not interviewed { child++; DFS (next,cur); Low[cur]=min (Low[next],low[cur]);//No Back edge returns to its ancestors, equal to return to itself at most, setting flag if (Low[next]>=dfn[cur]) flag= 1; } else if (NEXT!=PA)//If you have visited low[cur]=min (Low[cur],dfn[next]);} If there are more than two sub-nodes or the nodes are not root, and the cut-point precondition is set, it should be cut if ((child>=2 | | pa>=0) && flag) Cut_vertex_num[++ans ]=cur; return;}
Copyright notice: This article Bo Master original articles, blogs, without consent may not be reproduced.
Pointcut algorithm Template (Cut-vertex)