#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <cmath>
#include <unordered_map>
#include <unordered_set>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <deque>
#include <functional>
#include <climits>
#define quickio ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define endl "\n"
using namespace std;
typedef long long ll;
const int N = 2e4 + 5;
const int M = 1e5 + 5;
int n, m;
int fa[N * 2];
int ans;
struct zf
{
int a;
int b;
int c;
bool operator<(struct zf t)
{
return c < t.c;
}
}zf[M];
int find(int son)
{
if (fa[son] == son)
return son;
return fa[son] = find(fa[son]);
}
int FindMin()
{
for (int i = 0; i < m; i++)
{
if (find(zf[i].a) == find(zf[i].b))//如果两个在同一集合------->已经分好两组了------->则他们之间的边权就是答案
{
return zf[i].c;
}
else//如果两个不在同一集合,则分别列入对方的敌人集合
{
fa[find(zf[i].a)] = find(zf[i].b + n);
fa[find(zf[i].b)] = find(zf[i].a + n);
}
}
return 0;
}
int main()
{
cin >> n >> m;
for (int i = 0; i < m; i++)
{
cin >> zf[i].a >> zf[i].b >> zf[i].c;
}
sort(zf, zf + m);//排序所有边
for (int i = 1; i <= 2 * n; i++)
{
fa[i] = i;//i >= n的存的是敌人
}
ans = FindMin();
cout << ans << endl;
return 0;
}
只有10分,不知道哪里错了