这一段写错了
```cpp
if (u != v) {
ans += a[i].val;
f[u] = v;
cnt ++;
}
```
这里应当是确定两个点是否在同一连通块里,也就是判断 u 和 v 的祖先是否相同,所以应当写成:
```cpp
int fu=find(u),fv=find(v)
if (fu != fv) {
ans += a[i].val;
f[fu] = fv;
cnt ++;
}
```
by I_like_magic @ 2023-11-11 10:20:39
@[I_like_magic](/user/778235) OK谢谢
by pengziyippp @ 2023-11-11 10:25:10
@[pengziyippp](/user/845330) 还有一点需要注意,如果枚举到最后一条边时,图才能连通,那么你的代码在执行完最后一个 if后就会离开循环,输出 `orz`,所以在 `cout<<"orz";` 前还要判断 `cnt` 是否等于 `n-1`
by I_like_magic @ 2023-11-11 10:28:27
@[I_like_magic](/user/778235) 好的过了
by pengziyippp @ 2023-11-11 10:29:13