不要这样写
if(low[v]>=dfn[u]&&u!=1){ vis[u]=1; sum+=siz[v]; ans[u]+=siz[v]*(n-siz[v]); }
应该改成这样
if(low[v]>=dfn[u]){ sum+=siz[v]; ans[u]+=siz[v]*(n-siz[v]); if(u!=1)vis[u]=1; }
因为就算是根节点,也是需要处理子树大小的,最开始的代码直接把根节点的情况跳过了。需要在处理子树大小过后再特判是不是根节点。