10pts 求助 并查集
查看原帖
10pts 求助 并查集
972001
YING_Miranda楼主2023/11/19 21:47
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6+10;
int n,m,fa[N];
struct road{
    int x,y,t;
}aa[N];
bool cmp(road a,road b){
    return a.t<b.t;
}
int find(int a){
    if(fa[a]==a) return a;
    return fa[a]=find(fa[a]);
}
void merge(int a,int b){
    int fx=find(a),fy=find(b);
    fa[fx]=fy;
    n--;
}
signed main(){
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        cin>>aa[i].x>>aa[i].y>>aa[i].t;
    }
    for(int i=1;i<=n;i++){
        fa[i]=i;
    }
    sort(aa+1,aa+1+m,cmp);
    for(int i=1;i<=m;i++){
        merge(aa[i].x,aa[i].y);
        if(n==1){
            cout<<aa[i].t;
            return 0;
        }
    }
    cout<<-1;
    return 0;
}
2023/11/19 21:47
加载中...