全部MLE:
#include <bits/stdc++.h>
using namespace std;
const int N = 2e4 + 5;
int n, m, s, t;
struct edge
{
int to, w;
};
vector <edge> G[N];
bool flag[N];
void addedge(int u, int v, int w)
{
G[u].push_back({v, w});
G[v].push_back({u, w});
}
bool cheak(int mid, int now)
{
if (now == t) return 1;
for (int i = 0; i < G[now].size(); i ++)
if (!flag[G[now][i].to])
{
if (G[now][i].w > mid) return 0;
else return cheak(mid, G[now][i].to);
}
}
int main()
{
cin >> n >> m >> s >> t;
while (m --)
{
int u, v, w;
cin >> u >> v >> w;
addedge(u, v, w);
}
flag[s] = 1;
int l = 0, r = 100005;
while (l < r)
{
int mid = l + r >> 1;
if (cheak(mid, s)) r = mid;
else l = mid + 1;
}
cout << l;
return 0;
}