代码
#include <iostream>
#include <string>
#include <vector>
using namespace std;
const int N = 1505;
int dp[N][N];
int main()
{
for(int i = 1; i <= N - 5; i++)
{
for(int j = 1; j <= N - 5; j++)
{
dp[i][j] = 2e9;
}
}
int n, m;
cin >> n >> m;
for(int i = 1; i <= m; i++)
{
int u, v, w;
cin >> u >> v >> w;
w = -w;
dp[u][v] = w;
}
for(int k = 1; k <= n; k++)
{
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j]);
}
}
}
cout << ((dp[1][n] == 2e9) ? -1 : (dp[1][n] * -1)) << endl;
return 0;
}