~~我来~~
##### ……
看见你这个名字,我瞬间感觉我不配……
(感到丢银(╥﹏╥))
by linhao2010 @ 2023-11-26 17:31:02
@[noipquanguojinjiang](/user/873786) kruskal 是因为 `Ufset` 写错了吧应该是
```cpp
void Ufset()
{
for(int i=1;i<=n;i++)
parent[i]=i;
}
```
by WilliamFranklin @ 2023-11-26 17:31:18
@[linhao2010](/user/802830) 额。。。日常发神经罢了()
by noipquanguojinjiang @ 2023-11-26 18:55:26
@[WilliamFranklin](/user/330901) 还是不对┭┮﹏┭┮
by noipquanguojinjiang @ 2023-11-26 19:01:47
@[noipquanguojinjiang](/user/873786) 因为这是模板,所以看看我是怎么写的吧,可以学习一下:
```cpp
#include<bits/stdc++.h>
using namespace std;
inline int read()
{
int s = 0, f = 1;
char ch = getchar();
while(!isdigit(ch)) {
if(ch == '-') f = -1;
ch = getchar();
}
while(isdigit(ch)) {
s = (s << 1) + (s << 3) + (ch ^ 48);
ch = getchar();
}
return s * f;
}
struct node{
int to;
int from;
int money;
}a[500005];
int fa[100005];
bool cmp(node b, node c) {
return b.money < c.money;
}
void init(int n){
for (int i = 1; i <= n; i++) {
fa[i] = i;
}
}
int find(int i) {
if (i == fa[i]) {
return i;
} else {
fa[i] = find(fa[i]);
return fa[i];
}
}
void w(int i, int j) {
fa[find(i)] = find(j);
}
int main(){
int n, m;
n = read();
m = read();
int u, v, mo;
init(n);
for (int i = 1; i <= m; i++) {
a[i].from = read();
a[i].to = read();
a[i].money = read();
if(a[i].to == a[i].from){
i--;
m--;
}
}
sort(a + 1, a + m + 1, cmp);
int sum = 0;
long long ans = 0;
for (int i = 1; i <= m && sum < n; i++) {
if(find(a[i].to) != find(a[i].from)){
ans += a[i].money;
w(a[i].to, a[i].from);
sum++;
}
}
if(sum != n - 1) {
printf("orz");
}
else{
printf("%lld", ans);
}
}
```
by WilliamFranklin @ 2023-11-26 19:08:46
@WilliamFrankl 谢谢
by noipquanguojinjiang @ 2023-11-26 20:13:21