1 #include<iostream>
2 #include<cstdio>
3 #include<queue>
4 #include<cstring>
5 using namespace std;
6 int n,m,d;
7 queue<int>s;
8 int map[1010][1010],dis[1010];
9 bool vis[1010];
10 void spfa()
11 {
12 memset(dis,0x7f,sizeof(dis));
13 vis[1]=1;
14 s.push(1);
15 dis[1]=0;
16 while(!s.empty() )
17 {
18 d=s.front() ;
19 s.pop() ;
20 for(int i=1;i<=n;++i)
21 {
22 if(map[d][i]!=0&&dis[i]>dis[d]+map[d][i])
23 {
24 dis[i]=dis[d]+map[d][i];
25 if(!vis[i])s.push(i);
26 }
27 }
28 vis[d]=0;
29 }
30 }
31 int main()
32 {
33 cin>>n>>m;
34 if(n==0)
35 {
36 printf("0");return 0;
37 }
38 for(int a,b,c,i=1;i<=m;++i)
39 {
40 scanf("%d%d%d",&a,&b,&c);
41 map[a][b]=c;
42 }
43 spfa();
44 printf("%d",dis[n]);
45 return 0;
46 }