30pts,只有#1#2#3A了,其他全WA
#include <bits/stdc++.h>
using namespace std;
const int N = 2e4 + 10;
long long n, m, s, t, f[N], ans, M;
struct edges {
long long u, v, w;
} edge[N];
bool cmp(edges x, edges y) {
return x.w < y.w;
}
void init() {
cin >> n >> m >> s >> t;
int tmp;
for (int i = 1; i <= n; i++)
f[i] = i;
for (int i = 1; i <= m; i++) {
long long x, y, z;
cin >> x >> y >> z;
M++;
edge[M].u = x;
edge[M].v = y;
edge[M].w = z;
M++;
edge[M].u = y;
edge[M].v = x;
edge[M].w = z;
}
}
int find(int x) {
if (f[x] != x)
return f[x] = find(f[x]);
return x;
}
void kruskal() {
sort(edge + 1, edge + M + 1, cmp);
for (int i = 1; i <= M; i++) {
int x = edge[i].u;
int y = edge[i].v;
if (find(x)^find(y))
f[x] = f[y];
if (find(s) == find(t)) {
cout << edge[i].w;
exit(0);
}
}
}
int main() {
init();
kruskal();
return 0;
}