51,713
社区成员




//floyd
#include <bits/stdc++.h>
#define MOD 1000000007
#define INF 0x3f3f3f3f
using namespace std;
typedef long long LL;
int n,m;
int f[1600][1600];
int main() {
cin>>n>>m;
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++) {
if(i==j) f[i][j]=0;
else f[i][j]=-INF;
}
while(m--) {
int u,v,w;
cin>>u>>v>>w;
f[u][v]=max(f[u][v],w);
}
for(int k=1; k<=n; k++)
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
if(f[i][k]!=-INF && f[k][j]!=-INF)
f[i][j]=max(f[i][j],f[i][k]+f[k][j]);
if(f[1][n]==-INF) cout<<-1;
else cout<<f[1][n];
return 0;
}
//toposort
#include <bits/stdc++.h>
#define MOD 1000000007
#define INF 0x3f3f3f3f
using namespace std;
typedef long long LL;
int n,m;
int f[1600][1600],d[1600];
queue<int> q;
void bfs() {
q.push(1);//起点
d[1]=0;
while(!q.empty()) {
int h=q.front();
q.pop();
for(int i=1; i<=n; i++) {
if(f[h][i] && d[i]<d[h]+f[h][i]) {
d[i]=d[h]+f[h][i];
q.push(i);
}
}
}
}
int main() {
cin>>n>>m;
memset(d,-1,sizeof(d));
for(int i=1; i<=m; i++) {
int u,v,w;
cin>>u>>v>>w;
f[u][v]=max(f[u][v],w);
}
bfs();
cout<<d[n];
return 0;
}