/*
¸±²¢²é¼¯Ä£°å

int find(int x) {//²éѯ²Ù×÷
  if (x != fa[x])
    fa[x] = find(fa[x]);
  return fa[x];
}
void unionSet(int x, int y) {//ºÏ²¢²Ù×÷
  x = find(x);//Æäʵ²»ÓÿÌÒâдº¯Êý£¬Ö±½ÓÔÚÖ÷º¯ÊýÖÐдÒà¿É
  y = find(y);
  if (x == y)
    return;
  fa[x] = y;
}
*/
#include<bits/stdc++.h>
using namespace std;
int fa[989898];
struct node {
    int x,y,t;
} e[989898];
bool operator < (node a,node b) {
    return a.t<b.t;
}
int find(int x) {
    if(x!=fa[x])fa[x]=find(fa[x]);
    return fa[x];
}
int n,m,num,ans;
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",&e[i].x,&e[i].y,&e[i].t);
    sort(e+1,e+1+m);
    for(int i=1; i<=m; i++) {
        int x=find(e[i].x),y=find(e[i].y);
        if(x==y)continue;
        fa[x]=y;
        num++;
        ans=max(ans,e[i].t);
    }
    if(num!=n-1)printf("-1\n");
    else printf("%d\n",ans);
    return 0;
}

 

posted on 2023-03-08 10:57  ljq0120  阅读(23)  评论(0)    收藏  举报