检查在同一集合中的有几个点?
by 花园Serena @ 2018-08-23 14:25:25
@[待捕捉蒟蒻QωQ](/space/show?uid=117541) 合并不了 n-1 次就不能形成生成树。
不过这题没有 Orz 的数据。
by Anguei @ 2018-08-23 14:26:28
@[yyfcpp](/space/show?uid=53062) 帮忙改改行么QAQ
by FC是女孩子 @ 2018-08-23 14:27:19
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,m;
int fa[5001];
struct rec{
int x,y,z;
}edge[200001];
bool operator <(rec a,rec b){
return a.z<b.z;
}
int getfa(int x){
if(x==fa[x])return x;
return fa[x]=getfa(fa[x]);
}
int ans,sum;
int main(){
freopen("Kruskal.in","r",stdin);
freopen("Kruskal.out","w",stdout);
cin>>n>>m;
int i,j,k,x,y,z;
for(i=1;i<=m;i++)
scanf("%d%d%d",&edge[i].x,&edge[i].y,&edge[i].z);
sort(edge+1,edge+m+1);
for(i=1;i<=n;i++)
fa[i]=i;
for(i=1;i<=m;i++){
x=getfa(edge[i].x);
y=getfa(edge[i].y);
if(x==y)
continue;
fa[x]=y;
sum++;//计数,已连了多少条边
ans+=edge[i].z;
}
if(sum==n-1)
cout<<ans<<endl;
else
cout<<"orz"<<endl;//不联通
fclose(stdin);
fclose(stdout);
return 0;
}
```
by Kai_Admin @ 2018-08-23 14:33:07
数组好像开小了
by Kai_Admin @ 2018-08-23 14:34:28
只要orz你就行了
by hpbl @ 2018-08-23 14:43:29
@[陈奕舟](/space/show?uid=52487) 谢谢
by FC是女孩子 @ 2018-08-23 14:51:55