普通链式前向星
#include<bits/stdc++.h>
using namespace std;
struct node{
int v,w,ne;
}e[1505];
int n,m,cnt;
int head[1505],dis[1505];
queue<int> q;
void add(int u,int v,int w){
e[++cnt].v=v;
e[cnt].w=w;
e[cnt].ne=head[u];
head[u]=cnt;
}
void bfs(){
q.push(1);
while(!q.empty()){
int u=q.front(),v;
q.pop();
for(int i=head[u];i;i=e[i].ne){
v=e[i].v;
if(dis[u]+e[i].w>dis[v]){
dis[v]=dis[u]+e[i].w;
}
q.push(v);
}
}
}
int main(){
cin>>n>>m;
int u,v,w;
for(int i=1;i<=m;i++){
cin>>u>>v>>w;
add(u,v,w);
}
memset(dis,-1,sizeof(dis));
bfs();
// cout<<endl;
// for(int i=1;i<=n;i++)
// cout<<dis[i]<<' ';
cout<<dis[n];
return 0;
}