Submission #880377

#TimeUsernameProblemLanguageResultExecution timeMemory
880377MisterReaperCrocodile's Underground City (IOI11_crocodile)C++17
100 / 100
659 ms77804 KiB
#include <bits/stdc++.h> using namespace std; // [node cnt, edge cnt, edges, vals, exit cnt, exits] int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) { vector <pair <int, int>> adj[N]; for(int i = 0; i < M; i++) { int u = R[i][0], v = R[i][1], w = L[i]; adj[u].emplace_back(v, w); adj[v].emplace_back(u, w); } using T = pair <int, int>; priority_queue <T, vector <T>, greater <T>> pq; vector <int> cnt(N); vector <int> special(N); vector <int> ans(N, -1); for(int i = 0; i < K; i++) { int node = P[i]; special[node] = true; pq.emplace(0, node); } while(!pq.empty()) { auto [c, node] = pq.top(); pq.pop(); cnt[node]++; if(special[node]) { if(cnt[node] != 1) { continue; } } else { if(cnt[node] != 2) { continue; } } ans[node] = c; for(auto [child, w] : adj[node]) { pq.emplace(c + w, child); } } return ans[0]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...