結果
問題 | No.807 umg tours |
ユーザー |
![]() |
提出日時 | 2019-03-22 22:49:34 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,008 bytes |
コンパイル時間 | 1,961 ms |
コンパイル使用メモリ | 207,024 KB |
最終ジャッジ日時 | 2025-01-07 00:00:04 |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 4 WA * 21 TLE * 1 |
ソースコード
#include <bits/stdc++.h> using namespace std; int main() { int n, m; cin >> n >> m; vector<vector<pair<int, int>>> adj(n); for (int i = 0; i < m; i++) { int a, b, c; cin >> a >> b >> c; a--, b--; adj[a].emplace_back(b, c); adj[b].emplace_back(a, c); } vector<vector<long long>> dist(n, vector<long long>(2, 1e18)); using P = pair<long long, int>; priority_queue<P, vector<P>, greater<P>> que; que.emplace(0, 0); dist[0][0] = dist[0][1] = 0; while (que.size()) { P top = que.top(); que.pop(); int u = top.second; long long d = top.first; for (auto& p : adj[u]) { int v = p.first, w = p.second; dist[v][1] = min(dist[v][1], d); if (d + w < dist[v][0]) { dist[v][0] = d + w; que.emplace(d + w, v); } } } for (int i = 0; i < n; i++) { cout << dist[i][0] + dist[i][1] << '\n'; } }