#include <iostream>
#include <vector>
#include <queue>
#include <string.h>
#include <algorithm>
using namespace std;
struct node
{
int t, v;
};
int n, m;
int ind[1510], outd[1510], f[1510];
vector <node> e[1510];
queue <int> q;
int main()
{
memset(f, -2000000000, sizeof(f));
memset(ind, 0, sizeof(ind));
memset(outd, 0, sizeof(outd));
cin >> n >> m;
for(int i = 1, u, v, w; i <= m; ++i)
{
cin >> u >> v >> w;
++ind[v];
++outd[u];
e[u].push_back((node){v, w});
}
q.push(1);
while(!q.empty())
{
int fro = q.front();
q.pop();
for(int i = 0; i < outd[fro]; ++i)
{
int p = e[fro][i].t, l = e[fro][i].v;
f[p] = max(f[fro] + l, f[p]);
--ind[p];
if(!ind[p])
{
q.push(p);
}
}
}
cout << f[n];
}
记录