- 【模板】最小生成树
求助!!!!!!!!!
- 2024-8-11 21:00:20 @
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,fa[300000],ans,sum;
struct node
{
int l,r,u;
}lr[300000];
bool cmp(node x,node y)
{
return x.u<y.u;
}
int find(int k)
{
if(fa[k]==k)
{
return k;
}
else
{
fa[k]=find(fa[k]);
return fa[k];
}
}
signed main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int x,y,z;
cin>>x>>y>>z;
lr[i].l=x;
lr[i].r=y;
lr[i].u=z;
}
sort(lr+1,lr+1+m,cmp);
for(int i=1;i<=n;i++)
{
fa[i]=i;
}
for(int i=1;i<=m;i++)
{
if(ans==n-1)
{
cout<<sum;
break;
}
if(find(lr[i].l)!=find(lr[i].r))
{
fa[fa[lr[i].r]]=fa[lr[i].l];
ans++;
sum+=lr[i].u;
}
}
return 0;
}
75分 球球啦qwq
2 条评论
-
flyadmin LV 5 @ 2024-8-12 18:57:22
@ 韩昀翰
-
2024-8-12 18:56:09@
要把
if(ans==n-1) {cout<<sum;break;}
的位置和if(find(lr[i].l)!=find(lr[i].r)) { fa[fa[lr[i].r]]=fa[lr[i].l]; ans++; sum+=lr[i].u; }
的位置换一下AC
- 1
信息
- ID
- 91
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 883
- 已通过
- 293
- 上传者