제출 #1283974

#제출 시각아이디문제언어결과실행 시간메모리
1283974MisterReaperVoting Cities (NOI22_votingcity)C++20
0 / 100
308 ms2664 KiB
// File votingcity.cpp created on 27.10.2025 at 14:31:29 #include <bits/stdc++.h> using i64 = long long; #ifdef DEBUG #include "/home/ahmetalp/Desktop/Workplace/debug.h" #else #define debug(...) void(23) #endif constexpr i64 inf = i64(1E18); template<typename T> bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; } template<typename T> using min_pq = std::priority_queue<T, std::vector<T>, std::greater<T>>; int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int N, M, K; std::cin >> N >> M >> K; std::vector<int> spec(N); for (int i = 0; i < K; ++i) { int A; std::cin >> A; spec[A] = true; } std::vector<std::array<int, 3>> E(M); std::vector<std::vector<int>> adj(N); for (int i = 0; i < M; ++i) { int A, B, C; std::cin >> A >> B >> C; E[i] = {A, B, C}; adj[A].emplace_back(i); adj[B].emplace_back(i); } int Q; std::cin >> Q; std::vector<std::vector<i64>> dis; min_pq<std::tuple<i64, int, int>> pq; while (Q--) { int S; i64 P[5]; std::cin >> S; for (int i = 0; i < 5; ++i) { std::cin >> P[i]; if (P[i] == -1) { P[i] = inf; } } dis.assign(N, std::vector<i64>(1 << 5, inf)); pq.emplace(dis[S][0] = 0, S, 0); while (!pq.empty()) { auto[d, v, t] = pq.top(); pq.pop(); if (dis[v][t] != d) { continue; } for (auto i : adj[v]) { int u = E[i][0] ^ E[i][1] ^ v; if (chmin(dis[u][t], d + E[i][2])) { pq.emplace(dis[u][t], u, t); } for (int k = 0; k < 5; ++k) { if (t >> k & 1) { continue; } if (chmin(dis[u][t | 1 << k], d + P[k] + E[i][2] / 10 * (9 - k))) { pq.emplace(dis[u][t | 1 << k], u, t | 1 << k); } } } } i64 ans = inf; for (int i = 0; i < N; ++i) { if (spec[i]) { for (int j = 0; j < (1 << 5); ++j) { chmin(ans, dis[i][j]); } } } if (ans >= inf) { ans = -1; } std::cout << ans << '\n'; } return 0; }
#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...