#include #define int long long #define endl "\n" using namespace std; #define INF 1e12 int n,m; vector>> g; vector vis; vector dis; bool check(int x) { vis.assign(n+1,0); dis.assign(n+1,INF); queue qu; qu.push(1); dis[1]=0; while (!qu.empty()) { int curr = qu.front();qu.pop(); if (vis[curr]) continue; vis[curr]=1; for (auto [v,h]:g[curr]) { if (h>=x && !vis[v] && dis[v]>dis[curr]+1) { dis[v]=dis[curr]+1; qu.push(v); } } } if (dis[n]!=INF) return true; return false; } void solve() { cin>>n>>m; g.assign(n+1,vector>()); for (int i = 0; i < m; i++) { int u,v,h;cin>>u>>v>>h; g[u].push_back({v,h}); g[v].push_back({u,h}); } int low = 1; int high = INF; int ans = -1; while (low<=high) { int mid = (low+high)/2; if (check(mid)) { ans = mid; low = mid+1; } else { high = mid-1; } } if (ans==-1) cout << "NaN" << endl; else cout << ans << endl; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); // int t;cin>>t;while(t--) solve(); }