1 #include<iostream>
2 #include<algorithm>
3 using namespace std;
4
5 int fa[20010];
6
7 int find(int x)
8 {
9 if (x == fa[x])
10 return x;
11 fa[x] = find(fa[x]);
12 return fa[x];
13 }
14
15 int n, m;
16 int em[20010];
17
18 struct Edge
19 {
20 int u, v, w;
21 bool operator >(const Edge s)const
22 {
23 return w > s.w;
24 }
25 }e[100010];
26
27 int main()
28 {
29 cin >> n >> m;
30 for (int i = 1; i <= n; i++)
31 fa[i] = i;
32 for (int i = 1; i <= m; i++)
33 {
34 cin >> e[i].u >> e[i].v >> e[i].w;
35 }
36 sort(e + 1, e + m + 1, greater<Edge>());
37 for (int i = 1; i <= m; i++)
38 {
39 if (find(e[i].u) == find(e[i].v))
40 {
41 cout << e[i].w;
42 return 0;
43 }
44 if (!em[e[i].u]) em[e[i].u] = e[i].v;
45 else fa[find(em[e[i].u])] = find(e[i].v);
46 if (!em[e[i].v]) em[e[i].v] = e[i].u;
47 else fa[find(em[e[i].v])] = find(e[i].u);
48 }
49 cout << 0;
50 }