Submission #593423

#TimeUsernameProblemLanguageResultExecution timeMemory
593423piOOERobot (JOI21_ho_t4)C++17
0 / 100
365 ms34840 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin >> n >> m; vector<vector<pair<int, int>>> g(n); //to, weight vector<int> c(m), p(m), a(m), b(m); vector<map<int, int>> cnt(n); for (int i = 0; i < m; ++i) { cin >> a[i] >> b[i] >> c[i] >> p[i]; --a[i], --b[i]; ++cnt[a[i]][c[i]]; ++cnt[b[i]][c[i]]; } for (int i = 0; i < m; ++i) { if (cnt[a[i]][c[i]] == 1) { g[a[i]].emplace_back(b[i], 0); } else { g[a[i]].emplace_back(b[i], p[i]); } if (cnt[b[i]][c[i]] == 1) { g[b[i]].emplace_back(a[i], 0); } else { g[b[i]].emplace_back(a[i], p[i]); } } const ll inf = 1e18; vector<ll> dist(n, inf); dist[0] = 0; set<pair<ll, int>> st; st.insert({0, 0}); while (!st.empty()) { auto [ww, v] = *st.begin(); st.erase(st.begin()); for (auto [to, w] : g[v]) { if (dist[to] > dist[v] + w) { st.erase({dist[to], to}); dist[to] = dist[v] + w; st.insert({dist[to], to}); } } } cout << (dist[n - 1] == inf ? -1 : dist[n - 1]); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...