#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+5, mod = 1e9+7;
int a[N], n, m;
int d[N];
bool vis[N];
struct node{
	int y, w;
	bool operator < (const node a) const{
		return w > a.w;
	}
};
vector<node> g[N];
void dijkstra(int s){
	memset(d, 0x3f, sizeof d); 
	priority_queue<node> q;
	d[s] = 0;
	q.push({s, 0}); 
	while(!q.empty()){
		node t = q.top();
		int x = t.y;
		q.pop();
		if(vis[x]) continue;
		vis[x] = true;
		
		for(int i = 0; i < g[x].size(); i++){
			int y = g[x][i].y, w = g[x][i].w;
			if(vis[y]) continue;
			if(d[y] > d[x] + w){
				d[y] = d[x] + w;
				q.push({y, d[y]});
			}
		}
		
	}
} 

signed main() {
	cin >> n >> m;
	for(int i = 1; i <= m; i++){
		int x, y, w;
		cin >> x >> y >> w;
		g[x].push_back({y, w});
	}
	dijkstra(1);
	if(d[n] != 0x3f3f3f3f)	
		cout << d[n];
	else cout << -1;
	return 0;
}


0 条评论

目前还没有评论...