#include <bits/stdc++.h>
#define PII pair<int, int>
using namespace std;
const int N = 1.5e5 + 100, M = 1.5e5 + 100;
int head[N], ver[M], e[M], w[M], tot;
int n, m, d[N];
bool vist[N];
priority_queue<PII> q;
void add(int x, int y, int z)
{
++ tot;
ver[tot] = y;
w[tot] = z;
e[tot] = head[x];
head[x] = tot;
}
int main()
{
cin >> n >> m;
for (int i = 1; i <= m; i ++) {
int x, y, z;
cin >> x >> y >> z;
add(x, y, z);
}
memset(d, 0x7f, sizeof d);
memset(vist, false, sizeof vist);
d[1] = 0;
q.push({0, 1});
while (q.size())
{
int x = q.top().second;
q.pop();
if (vist[x]) continue;
vist[x] = true;
for (int i = head[x]; i; i = e[i])
{
int y = ver[i], z = w[i];
if (d[y] > d[x] + z)
{
d[y] = d[x] + z;
q.push({-d[y], y});
}
}
}
if (d[n] >= 0x7f7f7f7f) cout << -1 << endl;
else cout << d[n] << endl;
return 0;
}
acwing 850
最新推荐文章于 2024-07-04 01:15:42 发布