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