Submission #737877

#TimeUsernameProblemLanguageResultExecution timeMemory
737877SkywkCrocodile's Underground City (IOI11_crocodile)C++17
100 / 100
977 ms62884 KiB
#include "crocodile.h" #include<bits/stdc++.h> using namespace std; const int MAXN = 1e5; vector<pair<int, int>> graph[MAXN+1]; int city[MAXN]; priority_queue<long long> best[MAXN+1]; int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]){ for(int i=0; i<M; i++){ graph[R[i][0]].push_back({R[i][1], L[i]}); graph[R[i][1]].push_back({R[i][0], L[i]}); } set<pair<long long, int>> pq; for(int i=0; i<K; i++){ best[P[i]].push(0); best[P[i]].push(0); pq.insert({0, P[i]}); } while(!pq.empty()){ auto [d, v] = *pq.begin(); pq.erase(pq.begin()); if(best[v].size() < 2 || d != best[v].top()) continue; for(auto [u, c] : graph[v]){ best[u].push(d + c); if(best[u].size() > 2){ if(best[u].top() == d + c){ best[u].pop(); continue; } pq.erase({u, best[u].top()}); best[u].pop(); } pq.insert({d + c, u}); } } return best[0].top(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...