void tarjan(int x){
dfn[x]=low[x]=++tot;
s.push(x);insta[x]=true;
for(int i=head[x];i;i=edge[i].next)
{
int u=edge[i].to;
if(!dfn[u])
{
tarjan(u);
low[x]=min(low[x],low[u]);
}
else if(insta[u])low[x]=min(low[x],dfn[u]);
}
最后一行改成if(insta[u])low[x]=min(low[x],low[u]);
居然也过了,是数据太水了吗,顺便想问下为啥不能这么写,没太想明白,谢谢大佬。