/* ¸±²¢²é¼¯Ä£°å 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; }
浙公网安备 33010602011771号