#include<bits/stdc++.h>
using namespace std;
vector<int> kk[1501];
queue<int> qq;
int in[1501];
int ans[1501];
struct node{
int idx;
int v;
};
node tt[50001];
int flag[1501];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
int a;
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&a,&tt[i].idx,&tt[i].v);
kk[a].push_back(i);
in[tt[i].idx]++;
}
for(int i=1;i<=n;i++)
{
if(in[i]==0)
qq.push(i);
}
flag[1]=1;
while(qq.size())
{
int t=qq.front();
qq.pop();
for(int i=0;i<kk[t].size();i++)
{
int newidx=tt[kk[t][i]].idx;
int newv=tt[kk[t][i]].v;
if(flag[t]==1)
flag[newidx]=1;
ans[newidx]=max(ans[newidx],ans[t]+newv);
in[newidx]--;
if(in[newidx]==0)
qq.push(newidx);
}
}
if(flag[n]==0)
printf("-1");
else
printf("%d",ans[n]);
}
跪谢大佬orz