1 条题解
-
0
#include <bits/stdc++.h> using namespace std; // 全 vector 😋 using node = pair<int, int>; int n, m, s, t; vector<vector<node>> adj; // 全局变量配合 assign 和 resize,先声明再初始化 vector<int> dis; priority_queue<node, vector<node>, greater<>> pq; void dijkstra() { dis.assign(n + 1, 0x3f3f3f3f); // 大小和数字 dis[s] = 0; pq.emplace(0, s); while (!pq.empty()) { auto [d, u] = pq.top(); pq.pop(); if (d > dis[u]) { continue; } for (const auto& edge : adj[u]) { auto [v, w] = edge; if (dis[u] + w < dis[v]) { dis[v] = dis[u] + w; pq.emplace(dis[v], v); } } } } int main() { ios::sync_with_stdio(0), cin.tie(0); cin >> n >> m >> s >> t; adj.resize(n + 1); // 只需要指定大小 for (int i = 0; i < m; ++i) { int u, v, w; cin >> u >> v >> w; adj[u].emplace_back(v, w); adj[v].emplace_back(u, w); } dijkstra(); cout << dis[t] << '\n'; return 0; }
- 1
信息
- ID
- 318
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- (无)
- 递交数
- 12
- 已通过
- 4
- 上传者