#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int fa[10010],n,m;
struct node{
int no,to,val;
};
vector<node>gra;
int Find(int x)
{
if(fa[x]==x)return x;
else return fa[x]=Find(fa[x]);
}
void Union(int u,int v)
{
int U=Find(u),V=Find(v);
fa[V]=U;
}
bool cmp(node x,node y)
{
return x.val<y.val;
}
int kruskal()
{
for(int p=1;p<=10010;p++)
fa[p]=p;
sort(gra.begin(),gra.end(),cmp);
int ans=0;
for(int p=0;p<m;p++)
{
int U=Find(gra[p].no);int V=Find(gra[p].to);
if(U==V)continue;
ans+=gra[p].val;
Union(U,V);
}
return ans;
}
void readnum()
{
cin>>n>>m;
node temp;
for(int p=1,x,y,z;p<=m;p++)
cin>>x>>y>>z,temp.no=x,temp.to=y,temp.val=z,gra.push_back(temp);
}
int main()
{
readnum();
cout<<kruskal()<<endl;
}
这是我最小生成树板子的AC代码,我初始化并查集的时候越界了(当时我没检查到),结果我本地没RE,洛谷也AC了,这究竟是怎么回事/kk