并查集经典题目
2024-11-28 21:53:46
发布于:广东
16阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int fa[1005];
int n;
void init(){
for(int i = 1;i <= n;i ++) fa[i] = i;
}
int get_root(int x){
if(fa[x] == x) return x;
return get_root(fa[x]);
}
void merge(int &x,int &y){
x = get_root(x);
y = get_root(y);
if(x == y) return;
fa[x] = y;
n --;
}
struct node{
int l,r,t;
}lu[100005];
bool cmp(node a,node b){
return a.t < b.t;
}
int main(){
int m;
cin >> n >> m;
init();
for(int i = 0;i < m;i ++){
cin >> lu[i].l >> lu[i].r >> lu[i].t;
}
sort(lu,lu + m,cmp);
for(int i = 0;i < m;i ++){
merge(lu[i].l,lu[i].r);
if(n == 1){
cout << lu[i].t;
return 0;
}
}
cout << -1;
return 0;
}
这里空空如也
有帮助,赞一个