# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
985118 | 2024-05-17T10:49:52 Z | reverberation | Cyberland (APIO23_cyberland) | C++17 | 0 ms | 0 KB |
#include <bits/stdc++.h> using namespace std; using ll = long long; using pll = pair<ll, ll>; double solve(ll n, ll m, ll k, ll h, vector<ll> x, vector<ll> y, vector<ll> c, vector<ll> v) { vector<vector<pll>> g(n); for (ll i = 0; i < m; i++) { ll a = x[i], b = y[i], cost = c[i]; g[a].push_back({b, cost}); g[b].push_back({a, cost}); } vector<ll> dist(n, 1e16 + 10); dist[0] = 0; priority_queue<pll, vector<pll>, greater<pll>> q; q.push({0, 0}); while (!q.empty()) { auto [curcost, v] = q.top(); q.pop(); if (curcost != dist[v]) continue; for (auto [to, cost] : g[v]) { if (dist[to] > dist[v] + cost) { dist[to] = dist[v] + cost; q.push({dist[to], to}); } } } return dist[h]; }