类似于迪杰斯特拉最小生成树算法。
那个是只要取到n-1条边就好,这个如果1跟n联通就好
#include<bits/stdc++.h>
using namespace std;
const int MAXN=2e5+10;
int fa[MAXN];
struct node{
int u,v,w;
}p[MAXN];
int find_fa(int x){
return fa[x]=fa[x]==x?x:find_fa(fa[x]);
}
bool cmp(node& a,node& b){
return a.w<b.w;
}
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
fa[i]=i;
}
for(int i=0;i<m;i++){
scanf("%d%d%d",&p[i].u,&p[i].v,&p[i].w);
}
sort(p,p+m,cmp);
int u,v,w;
for(int i=0;i<m;i++){
u=p[i].u;
v=p[i].v;
w=p[i].w;
int fu=find_fa(u);
int fv=find_fa(v);
fa[fu]=fv;
if(find_fa(n)==find_fa(1)){
break;
}
}
printf("%d",w);
return 0;
}