#include #include #include using namespace std; int N,M,K; vector >G[2<<17]; bool check(int L) { vectordist(N,1e9); vectorvis(N,false); dist[0]=0; dequeP; P.push_back(0); while(!P.empty()) { int u=P.front(); P.pop_front(); if(vis[u])continue; vis[u]=true; for(paire:G[u]) { int v=e.first; if(e.second>L) { if(dist[v]>dist[u]+1) { dist[v]=dist[u]+1; P.push_back(v); } } else { if(dist[v]>dist[u]) { dist[v]=dist[u]; P.push_front(v); } } } } return dist[N-1]>N>>M>>K; for(int i=0;i>u>>v>>c; u--,v--; G[u].push_back(make_pair(v,c)); G[v].push_back(make_pair(u,c)); } int L=-1,R=2e5; while(R-L>1) { int mid=(L+R)/2; if(check(mid))R=mid; else L=mid; } cout<