#include <bits/stdc++.h>
using namespace std;
const int N = 510;
int n, m;
int a[N][N];
int dist[N];
bool vist[N];
int main()
{
cin >> n >> m;
memset(a, 0x3f3f3f3f, sizeof a);
for (int i = 1; i <= m; i ++)
{
int x, y, z;
cin >> x >> y >> z;
a[x][y] = min(a[x][y], z);
//a[y][x] = z;
}
memset(dist, 0x3f, sizeof dist);
memset(vist, false, sizeof vist);
for (int i = 1; i <= n; i ++) a[i][i] = 0;
dist[1] = 0;
for (int cnt = 1; cnt <= n; cnt ++)
{
int max_n = 0x3f3f3f3f, x;
for (int i = 1; i <= n; i ++)
if (!vist[i] && dist[i] < max_n)
max_n = dist[i], x = i;
vist[x] = true;
for (int y = 1; y <= n; y ++)
dist[y] = min(dist[y], dist[x] + a[x][y]);
}
if (dist[n] >= 0x3f3f3f3f) cout << -1 << endl;
else cout << dist[n] << endl;
return 0;
}
02-17
616

08-17
159

03-30