在做tarjan的时候那个根节点不是要看它的儿子是不是大于等于 2,如果是那么一定是割点。
void tarjan(int x) {
dfn[x] = low[x] = ++ dfncnt;
int child = 0;
for (auto y : g[x]) {
if (!dfn[y]) {
tarjan(y), low[x] = min(low[x], low[y]);
if (low[y] >= dfn[x] && x != root) cut[x] = true;
if (x == root) child ++;
} else low[x] = min(low[x], dfn[y]);
}
if (child >= 2 && x == root) cut[x] = true;
}
但是我做的题,以及之前看题解的时候发现,这个特判似乎不用加?这是为什么,是题目的性质还是我记错了?那个割点模板就必须加这个特判。