#include<cstdio>
using namespace std;
const int MAXN=1505,MIN=-0x3f3f3f3f;
int g[MAXN][MAXN],d[MAXN];
bool vis[MAXN];
void dijkstra(int n) {
d[0]=MIN;
for(int i=1;i<=n;i++)
d[i]=g[1][i];
vis[1]=true;
for(int i=1;i<=n;i++) {
int k=0;
for(int j=1;j<=n;j++) {
if(!vis[j]&&d[j]>d[k])
k=j;
}
vis[k]=true;
for(int j=1;j<=n;j++) {
if(g[k][j]!=MIN&&d[k]+g[k][j]>d[j])
d[j]=d[k]+g[k][j];
}
}
}
int main() {
int n,m,from,end,val;
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++) {
for(int j=1;j<=n;j++) {
if(i!=j)
g[i][j]=MIN;
}
}
for(int i=1;i<=m;i++) {
scanf("%d %d %d",&from,&end,&val);
if(g[from][end]<val)
g[from][end]=val;
}
dijkstra(n);
if(d[n]==MIN)
printf("-1");
else
printf("%d",d[n]);
return 0;
}
麻烦大佬指正一下哪里错了,悬关。