2 条题解
-
1
#include <bits/stdc++.h> // #define int long long // 仅在需要大整数时使用,memset 数组为 0x3f 时去掉 #define INF 0x3f3f3f3f #define PII pair<int, int> #define ULL unsigned long long #define PIII tuple<int, int, int> #define all(v) v.begin(), v.end() #define debug(a) cout << #a << " = " << a << endl; using namespace std; constexpr int N = 1 * 1e5 + 10, M = 2 * 1e5 + 10; int n, m; vector<PII> G[M]; int dist[N]; bool st[N]; int Dijikstra() { memset(dist, 0x3f, sizeof(dist)); memset(st, false, sizeof(st)); priority_queue<PII, vector<PII>, greater<PII>> heap; heap.push(make_pair(0, 1)); dist[1] = 0; while (heap.size()) { auto [d, u] = heap.top(); heap.pop(); if (st[u]) continue; st[u] = 1; for (auto [v, w] : G[u]) { if (dist[u] + w < dist[v]) { dist[v] = dist[u] + w; heap.push(make_pair(dist[v], v)); } } } return dist[n]; } void solve() { cin >> n >> m; for (int i = 0; i < m; i ++) { int u, v, w; cin >> u >> v >> w; G[u].emplace_back(v, w); } int ans = Dijikstra(); if (ans >= INF / 2) cout << -1 << '\n'; else cout << ans << '\n'; } signed main() { ios::sync_with_stdio(0); cin.tie(nullptr), cout.tie(nullptr); int _ = 1; // cin >> _; while (_--) { solve(); } return 0; } /** * author: Nijika_jia * description: C++17 Algorithm Template for Competitive Programming */
信息
- ID
- 5626
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 25
- 已通过
- 3
- 上传者