@[杨丶老爹](/user/448965) 并查集 or 算法过程中都可以判断啊
by tribool4_in @ 2021-07-25 21:48:18
```cpp
#include<bits/stdc++.h>
using namespace std;
const int N=5001,M=1e6;
int n,m,fa[N],ans,cnt;
bool vis[N];
int cnt1=0;
struct node{
int x,y,z;
}edge[M];
bool cmp(node a,node b)
{
return a.z<b.z;
}
int find(int x)
{
if(x==fa[x]) return x;
else return fa[x]=find(fa[x]);
}
void merge(int x,int y)
{
int fx=find(x),fy=find(y);
fa[fx]=fy;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
fa[i]=i;
for(int i=1;i<=m;i++)
{
cin>>edge[i].x>>edge[i].y>>edge[i].z;
}
sort(edge+1,edge+1+m,cmp);
for(int i=1;i<=n;i++)
fa[i]=i;
for(int i=1;i<=m;i++)
{
int x=find(edge[i].x);
int y=find(edge[i].y);
if(x==y) continue;
fa[x]=y;
cnt1++;
ans+=edge[i].z;
if(cnt1 == n-1){
cout << ans << endl;
return 0;
}
}
cout<<"orz"<<endl;
return 0;
}
```
by Jiayn @ 2021-07-25 21:51:41
@[杨丶老爹](/user/448965)
这样子判断 `orz`,就是只要已选择的边为 $n-1$,就输出 $ans$,然后 `return 0;`
如果没有选择到 $n-1$ 条边(没有遇到 `return 0;`,成功运行到了最后),就输出 `orz`
by Jiayn @ 2021-07-25 21:53:50
@[杨丶老爹](/user/448965)
我这里面给你加了个 `cnt1`,表示已选择的边
by Jiayn @ 2021-07-25 21:55:50
@[Jiayn](/user/267122) 妙啊,谢谢大佬
by 杨丶老爹 @ 2021-07-26 07:40:51
@[杨丶老爹](/user/448965) 不用谢awa
by Jiayn @ 2021-07-26 08:35:21