万紫千红,MLE,WA,AC
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
typedef long long ll;
vector<int> vc1[1505];
vector<int> vc2[1505];
int in[1505],ans[1505];
void top_sort(int n){
queue<int> q;
for(int i=2;i<=n;i++){
ans[i]=-1;
if(!in[i]) q.push(i);
}
while(!q.empty()){
int a=q.front();
q.pop();
for(auto x:vc1[a]){
if(in[x]) q.push(x);
}
}
q.push(1);
while(!q.empty()){
int a=q.front();
q.pop();
for(int i=0;i<vc1[a].size();i++){
if(ans[vc1[a][i]]<ans[a]+vc2[a][i]) ans[vc1[a][i]]=ans[a]+vc2[a][i];
if(!in[vc1[a][i]]) q.push(vc1[a][i]);
}
}
}
int main(){
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++){
int u,v,w;
cin>>u>>v>>w;
vc1[u].push_back(v);
vc2[u].push_back(w);
in[v]++;
}
top_sort(n);
cout<<ans[n];
// fclose(stdin);
// fclose(stdout);
return 0;
}
/*
*/