void tarjan(int u,int mr){
int rc=0;
dfn[u]=low[u]=++cnt;
for (int p=head[u];p;p=nxt[p]){
int v=a[p];
if (!dfn[v]){
tarjan(v,mr);
low[u]=min(low[u],low[v]);
if(low[v]>=dfn[u]&&u!=mr) cut[u]=true;
if (u==mr) rc++;
}
low[u]=min(low[u],dfn[v]);
}
if (u==mr&&rc>=2) cut[mr]=true;
}
里边的
if(low[v]>=dfn[u]&&u!=mr) cut[u]=true;
为什么放到if(!dfn[v])外边就错了