Submission #1281675

#TimeUsernameProblemLanguageResultExecution timeMemory
1281675SnowRaven52Voting Cities (NOI22_votingcity)C++20
100 / 100
250 ms14724 KiB
#include <bits/stdc++.h> using namespace std; int main() { // freopen("main.in", "r", stdin); // freopen(".out", "w", stdout); ios::sync_with_stdio(false); cin.tie(nullptr); long long n, e, s; cin >> n >> e >> s; vector<long long> c; for (int i = 0; i < s; i++) { long long v; cin >> v; c.push_back(v); } vector<vector<pair<long long,long long>>> g(n + 1); for (int i = 0; i < e; i++) { long long u, v, p; cin >> u >> v >> p; g[v].push_back({ u, p }); } const long long inf = (long long)1e16; vector<vector<long long>> d(n + 1, vector<long long>(32, inf)); using a3 = array<long long, 3>; priority_queue<a3, vector<a3>, greater<a3>> pq; for (auto &x : c) pq.push({ 0, x, 0 }); while (!pq.empty()) { auto [cost, u, mask] = pq.top(); pq.pop(); if (d[u][mask] <= cost) continue; d[u][mask] = cost; for (auto &nx : g[u]) { auto [v, w] = nx; pq.push({ cost + w, v, mask }); for (int i = 0; i < 5; i++) { if ((mask >> i) & 1) continue; long long nw = w * (10 - i - 1) / 10; pq.push({ cost + nw, v, mask + (1 << i) }); } } } long long q; cin >> q; while (q--) { long long pos; cin >> pos; array<long long, 5> price; for (int i = 0; i < 5; i++) cin >> price[i]; if (d[pos][0] == inf) { cout << -1 << endl; continue; } long long best = inf; for (int m = 0; m < 32; m++) { long long cur = d[pos][m]; bool ok = true; for (int i = 0; i < 5; i++) { if (((m >> i) & 1) == 0) continue; if (price[i] == -1) { ok = false; break; } cur += price[i]; } if (!ok) continue; if (cur < best) best = cur; } cout << best << endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...