RT,为什么?
#include<bits/stdc++.h>
const int N = 2e6 + 10;
const int M = 4e5 + 10;
const int MAX = 1e9 + 7;
const int fx[] = {0, 0, -1, 1};
const int fy[] = {1, -1, 0, 0};
//const long long MAX=1e18+17;
#define ull unsigned long long
#define ll long long
#define ri register
#define il inline
int n, m;
struct Edge {
int sta, end, w;
}edge[M];
bool cmp(Edge x, Edge y) {
return x.w < y.w;
}
int fa[102];
int find(int x) {
return fa[x] == x ? x : fa[x] = find(fa[x]);
}
signed main(){
cin >> n >> m;
for (int i = 1; i <= n; ++ i) {
fa[i] = i;
}
for (int i = 1; i <= m; ++ i) {
scanf("%d%d%d", &edge[i].sta, &edge[i].end, &edge[i].w);
}
sort(edge + 1, edge + 1 + m, cmp);
int tag = 0, num = 0;
for (int tmpx, tmpy, w, i = 1; tag < n - 1; ++ i) {
tmpx = find(edge[i].sta);
tmpy = find(edge[i].end);
w = edge[i].w;
if (tmpx == tmpy) {
continue;
}
fa[tmpx] = tmpy;
num = max(num, w);
tag ++;
}
printf("%d %d", tag, num);
return 0;
}