#include using namespace std; #define int long long int T,ans=1e18,n,m; struct aaaa{ int u,t; bool operator <(const aaaa &a)const{ return t(const aaaa &a)const{ return t>a.t; } }; vectorv[2010]; int d[2010][2010]; int dis[2010],mp[2010]; priority_queue,greater >q; void dij(int st){ while(!q.empty())q.pop(); for(int x=1;x<=n;x++){ dis[x]=1e15;mp[x]=0; } dis[st]=0; q.push({st,0}); while(!q.empty()){ aaaa sx=q.top(); q.pop(); if(mp[sx.u]==1)continue; mp[sx.u]=1; for(auto y:v[sx.u]){ if(d[sx.u][y]==0)continue; int val=d[sx.u][y]; if(dis[sx.u]+val>T; cin>>n>>m; for(int x=1;x<=m;x++){ int u,w,t; cin>>u>>w>>t; if(T==0){ d[u][w]=d[w][u]=t; v[u].push_back(w); v[w].push_back(u); } else{ v[u].push_back(w); d[u][w]=t; } } for(int x=1;x<=n;x++){ for(int y=1;y<=n;y++){ if(d[x][y]!=0){ int p=d[y][x],qq=d[x][y]; d[y][x]=d[x][y]=0; dij(y); ans=min(ans,dis[x]+qq); d[y][x]=p,d[x][y]=qq; } } } cout<