void dfs5(int u) { if(vis[u])return; vis[u]=1; for(int i=head[u];i;i=edge[i].ne) { int v=edge[i].to; if(v==fa[u])continue; dfs5(v); up[u]+=up[v]; down[u]+=down[v]; } if(up[u]&&down[u]) { puts("No"); exit(0); } }
看看有没有这两行
if(vis[u])return; vis[u]=1;