题意:
题解:
贪心+并查集
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#define ll long long
#define N 200010
using namespace std;
int fa[N<<1];
struct Node {
int x,y,z;
bool operator < (const Node &a) const {
return z>a.z;
}
}e[N];
int gi() {
int x=0,o=1; char ch=getchar();
while(ch!='-' && (ch<'0' || ch>'9')) ch=getchar();
if(ch=='-') o=-1,ch=getchar();
while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();
return o*x;
}
int find(int x) {
return x==fa[x]?x:fa[x]=find(fa[x]);
}
int main() {
int n=gi(),m=gi();
for(int i=1; i<=(n<<1); i++) fa[i]=i;
for(int i=1; i<=m; i++) {
int x=gi(),y=gi(),z=gi();
e[i]=(Node){x,y,z};
}
sort(e+1,e+m+1);
for(int i=1; i<=m; i++) {
int x=e[i].x,y=e[i].y,xx,yy;
xx=find(x+n),yy=find(y+n);
x=find(x),y=find(y);
if(x==y || xx==yy) {
printf("%d", e[i].z);
return 0;
}
fa[xx]=y,fa[yy]=x;
}
puts("0");
return 0;
}