这道题ac一段时间了,会看我的代码的时候发现
for (int i = 0; i < m; i++) {
int a = edge[i].a;
int b = edge[i].b;
int len = -edge[i].w;
if (find(a) != find(b)) {
p[find(a)] = find(b);
cnt++;
insert(a, b, len);
insert(b, a, len);
}
}
我在重建图的时候,插入的不是当前遍历的边,这里的a、b是它们各自集合的代表元。为什么还能ac呢?