2018-team4-modules-割点
从 Trac 迁移的文章
这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。
原文章内容如下:
{{{
//若cut[u]=1则u为割点
void Tarjan(int u) {
dfn[u] = low[u] = ++tme;
for (int i=0;i<(int)e[u].size();i++) {
int v = e[u][i];
if (!dfn[v]) {
Tarjan(v);
low[u] = min(low[u],low[v]);
if (low[v] >= dfn[u]) {
if (u == now) deg++; else cut[u] = 1;
}
} else
low[u] = min(low[u],dfn[v]);
}
return ;
}
}}}
//若cut[u]=1则u为割点
void Tarjan(int u) {
dfn[u] = low[u] = ++tme;
for (int i=0;i<(int)e[u].size();i++) {
int v = e[u][i];
if (!dfn[v]) {
Tarjan(v);
low[u] = min(low[u],low[v]);
if (low[v] >= dfn[u]) {
if (u == now) deg++; else cut[u] = 1;
}
} else
low[u] = min(low[u],dfn[v]);
}
return ;
}