不过这个错误挺好找。
原本建的图就是双向边,要是缩点之后建新图,对于每条边的两个端点都建双向边,那就相当于建了四条边。
错误示例:
for (int u = 1; u <= n; u++) for (int v : g1[u]) if (belong[u] != belong[v]) { g2[belong[u]].push_back(belong[v]); g2[belong[v]].push_back(belong[u]); }