【模板】tarjan求割点
int dfn[maxn]; int low[maxn]; bool cut[maxn]; int tot; void tarjan(int x) { dfn[x] = low[x] = ++tot; int cntf = 0; for (Re int i = head[x]; i != -1; i = e[i].nxt) { int v = e[i].v; if (!dfn[v]) { tarjan(v); low[x] = min(low[x], low[v]); if (low[v] >= dfn[x]) { cntf++; if (x > 1 || cntf > 1) cut[x] = true; } } else low[x] = min(low[x], dfn[v]); } }
浙公网安备 33010602011771号