求助,最后一个点没过
查看原帖
求助,最后一个点没过
747732
sunpengyu楼主2023/8/30 10:24

懒得判断orz了,因为我发现没有一个样例有orz

#include <bits/stdc++.h>
#define MAXN 200010
using namespace std;
int n,m,tot,sum;
int fa[MAXN];
struct nond{
    int x,y,z;
}edge[MAXN];
int cmp(nond a,nond b){
    return a.z<b.z;
}
int find(int x){
    if(fa[x]==x)    return fa[x];
    else return fa[x]=find(fa[x]);
}
int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++) fa[i]=i;
    for(int i=1;i<=m;i++) scanf("%d%d%d",&edge[i].x,&edge[i].y,&edge[i].z);
    sort(edge+1,edge+1+m,cmp);
    for(int i=1;i<=m;i++){
        int dx=find(edge[i].x);
        int dy=find(edge[i].y);
        if(dx==dy)    continue;
        fa[dy]=dx;
        sum+=edge[i].z;
        tot++;
        if(tot==n-1)    break;
    }
    cout<<sum;
}
2023/8/30 10:24
加载中...