#include<bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f int dis[35]; int visit[35]; int SSSP[35][35]; void dijkstra(int x,int n) { int pos; int minn; for(int i=1;i<=n;i++) { dis[i]=SSSP[1][i]; } visit[x]=1; dis[x]=0; for(int i=1;i<=n;i++) { minn=INF; pos=0; for(int j=1;j<=n;j++) { if(!visit[j]&&dis[j]<minn) { pos=j; minn=dis[j]; } } if(pos==0) break; else { visit[pos]=1; for(int j=1;j<=n;j++) { if(!visit[j]&& dis[pos]+SSSP[pos][j]<dis[j]) dis[j]=dis[pos]+SSSP[pos][j]; } } } } int main() { int n,m; cin>>n>>m; memset(visit,0,sizeof(visit)); memset(dis,0,sizeof(dis)); memset(SSSP,INF,sizeof(SSSP)); int a[1005]; int b[1005]; int t[1005]; for(int i=1;i<=m;i++) { cin>>a[i]>>b[i]>>t[i]; SSSP[a[i]][b[i]]=t[i]; SSSP[b[i]][a[i]]=t[i]; } dijkstra(1,n); //1 -n ; cout<<dis[n]<<endl; }