问题标题: 酷町堂:4770 南海群岛

0
0
已解决
张韬
张韬
资深守护
资深守护

 

#include <iostream>
#include <algorithm>
using namespace std;
int n,m,ans;
struct zt{
    int x,y,t;
}a[100005];
bool cmp(zt x,zt y){
    return x.t<y.t;
}
int fa[100005];
void init(){
    for(int i=1;i<=n;i++)
        fa[i]=i;
}
int find(int x){    
    if(fa[x]==x) return fa[x];
    return fa[x]=find(fa[x]);
}
void unit(int x,int y){
    x=find(x);
    y=find(y);
    if(x==y) return ;
    fa[y]=x; 
}
bool same(int x,int y){
    return find(x)==find(y);

bool check(){
    for(int i=1;i<=n;i++){
        if(same(i,i+1)==0){
            return false;
        }
    }
    return true;

int main(){
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        cin>>a[i].x>>a[i].y>>a[i].t;
    }
    sort(a+1,a+1+n,cmp);
    for(int i=1;i<=m;i++){
        unit(a[i].x,a[i].y);
        ans+=a[i].t;
        if(check()==true){
            cout<<ans;
            return 0;
        }
    }
    cout<<-1;
    return 0;
}

各位大佬们,请问哪错了


0
我要回答