原理说明的我就不再说了,网上都有,我就直接把模板打出来吧。
点与边的不同在于,点不会用重点,但边会有重边。
//割点
void tarjan(int u,int father)
{
dfn[u]=low[u]=++cnt;
int son=0;
for(int i=head[u];i!=0;i=e[i].to)
{
int v=e[i].next;
if(!dfn[v])
{
tarjan(v,father);
low[u]=min(low[u],low[v]);
if(low[v]>=dfn[u]&&u!=father)
vis[u]=1;
if(u==father)
son++;
}
low[u]=min (low[u],dfn[v]);
}
if(son>=2&&u==father)
vis[u]</